我想在Python脚本中使用self(用于全局变量)和命令行中的参数,但实际上并不能使它们正常工作。
def otherFunction(self)
print self.tecE
def main(argv,self):
self.tecE = 'test'
otherFunction()
if __name__ == "__main__":
main(sys.argv[1:],self)
这给了我一个错误:
main(sys.argv[1:],self)
NameError: name 'self' is not defined
那么如何以及在哪里定义self
?
答案 0 :(得分:2)
通常在Python类中使用self
的python约定,您的工作有点混乱。
所以您要么不使用类,就不将self视为全局命令,像这样:
import sys
myglobal = {} # Didn't want to name it self, for avoiding confusing you :)
def otherFunction():
print myglobal["tecE"]
def main(argv):
myglobal["tecE"] = 'test'
otherFunction()
if __name__ == "__main__":
main(sys.argv[1:])
或者像这样编写类:
import sys
class MyClass():
def otherFunction(self):
print self.tecE
def main(self, argv):
self.tecE = 'test'
self.otherFunction() # Calling other class members (using the self object which actually acting like the "this" keyword in other languages like in Java and similars)
if __name__ == "__main__":
myObj = MyClass() # Instantiating an object out of your class
myObj.main(sys.argv[1:])
那么如何定义自我呢?
您将使用self:
def my_method(self, arg1, arg2):
self.do_job("something", 123)
self.new_field = 56
通常在__init__()
构造函数方法中注意:在没有self.new_var
的情况下对类变量进行除垢将创建一个静态类变量。