我正在迈出python编程的第一步,我有一个名为node
的类,它包含一个名为node
的{{1}}(我认为合法)列表。我试图创建一个返回列表长度但却失败的函数。这是我的代码:
sons
这是错误:
NameError:未定义全局名称“self”
如果我试图删除自己:
NameError:未定义全局名称“self”
显然我误解了什么,但是什么?
答案 0 :(得分:3)
class node:
name="temp"
ID=-1
abstract="a short description"
text="the full description"
sons=[]
def sLen(self): # here
print ("hello")
return len(self.sons)
n = node()
n.sons = [1, 2, 3]
print n.sLen()
答案 1 :(得分:1)
类方法的第一个参数始终是对“self”的引用。
您可能也会在这里找到有趣的答案:What is the purpose of self?。
引用最重要的一点:
Python决定以一种使实例的方式来做方法 该方法属于自动传递,但未收到 自动:方法的第一个参数是实例 调用方法。
如果你在python中寻找关于类定义的更全面的讨论,当然官方文档是从http://docs.python.org/tutorial/classes.html开始的地方。
答案 2 :(得分:0)
您调用了方法none
的第一个参数,而不是self
。
return len(none.sons)