Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中定义类内的方法_Python_List_Methods - Fatal编程技术网

在python中定义类内的方法

在python中定义类内的方法,python,list,methods,Python,List,Methods,我正在进行python编程的第一步,我有一个名为node的类,它包含一个名为sons的node列表(我认为这是合法的)。我试图创建一个返回列表长度的函数,但失败了。这是我的密码: class node: name="temp" ID=-1 abstract="a short description" text="the full description" sons=[] def sLen(none): print ("hello")

我正在进行python编程的第一步,我有一个名为
node
的类,它包含一个名为
sons
node
列表(我认为这是合法的)。我试图创建一个返回列表长度的函数,但失败了。这是我的密码:

class node:
    name="temp"
    ID=-1
    abstract="a short description"
    text="the full description"
    sons=[]
    def sLen(none):
        print ("hello")
        return len(self.sons)
下面是错误:

NameError:未定义全局名称“self”

如果我试图移除自我:

NameError:未定义全局名称“self”


显然我误解了什么,但是什么?

您调用了方法的第一个参数
none
,而不是
self

return len(none.sons)

您调用了方法的第一个参数
none
,而不是
self

return len(none.sons)

类方法的第一个参数始终是对“self”的引用

也许你也会在这里找到有趣的答案:

引用最重要的一点:

Python决定以一种使实例 该方法将自动传递,但不会被接收 自动:方法的第一个参数是实例 方法被调用


如果您想更深入地讨论python中的类定义,当然可以从官方文档开始:。

类方法的第一个参数始终是对“self”的引用

也许你也会在这里找到有趣的答案:

引用最重要的一点:

Python决定以一种使实例 该方法将自动传递,但不会被接收 自动:方法的第一个参数是实例 方法被调用


如果您想更深入地讨论python中的类定义,当然可以从官方文档开始:。

注意,这只解决了代码中的一个问题。这段代码的唯一问题是我不明白它应该做什么。从Python的角度来看,没有问题。请参阅我的更新,此代码运行良好。@loki2302:您无法理解我的代码的用途的原因是,目前,主要是我在试图弄清楚一些东西。如果你感兴趣的话,我可以告诉你,我正在尝试构建一个简单的RPG活动管理器。@ YoTaMm:嗯,你应该考虑使用任何现有的解决方案,而不是从头开始执行所有这些东西。如果您正在编写RPG,请专注于RPG而不是节点。除非“节点”是字符;-)请注意,这只修复了代码中的一个问题。这段代码的唯一问题是我不明白它应该做什么。从Python的角度来看,没有问题。请参阅我的更新,此代码运行良好。@loki2302:您无法理解我的代码的用途的原因是,目前,主要是我在试图弄清楚一些东西。如果你感兴趣的话,我可以告诉你,我正在尝试构建一个简单的RPG活动管理器。@ YoTaMm:嗯,你应该考虑使用任何现有的解决方案,而不是从头开始执行所有这些东西。如果您正在编写RPG,请专注于RPG而不是节点。除非“节点”是字符;-)第一个参数总是self类,我可以给它取我喜欢的名字吗?不过你真的应该给它取个名字,这样以后可能阅读代码的其他人就不会感到惊讶了。第一个参数总是self类,我可以给它取我喜欢的名字吗?不过你真的应该给它取个名字,因此,其他可能稍后阅读代码的人并不感到惊讶。