这将不起作用:
class myClass:
def __init__(self, name):
self.name = name
def methodA(self, name=self.name):
print(f"Hello {name}!")
myInstance = myClass("Frank")
因为:
NameError: name 'self' is not defined
问题
self.name
不是在类的初始化已经定义?name
在初始化类实例时定义,同时还可以在同时调用特定方法时更改其值?我不想myInstance.name = "Peter"
在调用方法之前总是用单独的一行更改其值(例如,像这样:)。而且,我也不想被迫使用关键字传递它(例如,像这样:def methodB(self, name=name_typed_when_calling_method)
每次我调用使用该变量的方法时)。self
在评估默认参数(即方法定义时)时,未定义。它只是一个函数参数,在调用方法时绑定到参数。
你需要做的是使用一个前哨(像什么None
)作为默认值,并检查该在方法的主体内self
被定义。
class myClass:
def __init__(self, name):
self.name = name
def methodA(self, name=None):
if name is None:
name = self.name
print(f"Hello {name}!")
myInstance = myClass("Frank")
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句