以下面的简化示例为例。
class A(object):
variable_A = 1
variable_B = 2
def functionA(self, param):
print(param+self.variable_A)
print(A.functionA(3))在上面的示例中,我得到了以下错误
Traceback (most recent call last):
File "python", line 8, in <module>
TypeError: functionA() missing 1 required positional argument: 'param'但是,如果删除函数声明中的self,则无法访问类中的变量variable_A和variable_B,并得到以下错误
Traceback (most recent call last):
File "python", line 8, in <module>
File "python", line 6, in functionA
NameError: name 'self' is not defined那么,如何在访问类变量的同时不出现param错误呢?我正在使用Python 3仅供参考。
发布于 2017-01-30 19:59:45
您必须首先创建类A的实例
class A(object):
variable_A = 1
variable_B = 2
def functionA(self, param):
return (param+self.variable_A)
a = A()
print(a.functionA(3))如果你不想使用实例,你可以使用staticmethod装饰器。静态方法是方法的特例。有时,您会编写属于某个类的代码,但这根本不使用对象本身。
class A(object):
variable_A = 1
variable_B = 2
@staticmethod
def functionA(param):
return (param+A.variable_A)
print(A.functionA(3))另一种选择是使用类方法装饰器。类方法是不绑定到对象而是绑定到类的方法!
class A(object):
variable_A = 1
variable_B = 2
@classmethod
def functionA(cls,param):
return (param+cls.variable_A)
print(A.functionA(3))发布于 2017-01-30 19:54:01
上面代码片段中的functionA是一个实例方法。您不会将"self“直接传递给它。相反,您需要创建一个实例才能使用它。函数的"self“参数实际上就是它被调用的实例。例如:
a = A()
a.functionA(3)附注:请注意,您的functionA调用了print,但没有返回任何内容,这意味着它隐式返回None。您应该让它返回一个值并从调用方打印它,或者像我上面所做的那样,调用它并让它自己打印。
发布于 2017-01-30 19:53:17
首先创建一个A的对象。
a = A()
a.functionA(3)https://stackoverflow.com/questions/41935237
复制相似问题