在Python脚本中使用self和参数

时间:2018-11-14 09:17:07

标签: python python-3.x

我想在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

1 个答案:

答案 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:

  1. 作为类方法的第一个参数def my_method(self, arg1, arg2):
  2. 在班级中引用任何其他班级成员(如上所述)self.do_job("something", 123)
  3. 用于创建类成员:self.new_field = 56通常在__init__()构造函数方法中

注意:在没有self.new_var的情况下对类变量进行除垢将创建一个静态类变量。