har*_*rry 15 python variables self
刚开始学习python,我确信这是一个愚蠢的问题,但我正在尝试这样的事情:
def setavalue(self):
self.myname = "harry"
def printaname():
print "Name", self.myname
def main():
printname()
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
NameError: global name 'self' is not defined
Run Code Online (Sandbox Code Playgroud)
我看到这种使用self语句引用一些代码中不同方法的变量的方法,我读到它正常工作.
谢谢您的帮助
Jac*_*cob 31
self是一个类中的自引用.您的代码不在类中,您只定义了函数.你必须将你的方法包装在一个类中,如下所示.要使用该方法main(),首先必须实例化类的对象并在对象上调用该函数.
此外,您的函数setavalue应该在__init___实例化对象时调用的方法.您可能应该看的下一步是将名称作为参数提供给init,这样您就可以创建Name该类的任意命名对象;)
class Name:
def __init__(self):
self.myname = "harry"
def printaname(self):
print "Name", self.myname
def main(self):
self.printaname()
if __name__ == "__main__":
objName = Name()
objName.main()
Run Code Online (Sandbox Code Playgroud)
在Dive into Python中查看Python教程的Classes章节以获得进一步的参考.
在 Python 中,self是给类的实例方法的第一个参数的常规名称,它始终是调用方法的实例:
class A(object):
def f(self):
print self
a = A()
a.f()
Run Code Online (Sandbox Code Playgroud)
会给你类似的东西
<__main__.A object at 0x02A9ACF0>
Run Code Online (Sandbox Code Playgroud)