我想知道我们是否可以在类方法中调用self中初始化的变量。例如:
class ABC():
def method1(self):
self.var1 = '123'
@classmethod
def callvar1(cls):
'''print var1'''我想要实现相同的输出,如下所示:
class ABC():
var1 = '123'
def method1(self):
self.var1 = '123'
@classmethod
def callvar1(cls):
print(cls.var1)如何在callvar1中访问self.var1
发布于 2020-06-24 10:48:18
因为callvar1是一个类方法,所以它不能访问self。这是因为该方法并不绑定到类的特定实例,而是绑定到类本身。因此,当您调用该方法时,它不知道您引用的是哪个实例。正如您在代码的第二个块中所做的那样,您必须将要将其var1打印到函数的对象传递给函数。
您的另一种选择是不将其设置为类方法。
发布于 2020-06-24 10:49:33
类方法绑定到类本身,而不是类的特定实例,所以如果您试图访问类方法中的self.var1 (一个实例变量),您将不会有太多乐趣。
你最好的选择就是让这个方法不是一个类方法(取决于你的用例):
>>> class ABC():
... var1 = '123'
... def method1(self):
... self.var1 = '123'
... def callvar1(self):
... print(self.var1)
...
>>> b = ABC()
>>> b.callvar1()
123尽管另一种选择是将类的实例传递给类方法:
>>> class ABC():
... var1 = '123'
... def method1(self):
... self.var1 = '123'
... @classmethod
... def callvar1(cls, inst):
... print(inst.var1)
...
>>> b = ABC()
>>> ABC.callvar1(b)
123发布于 2020-06-24 10:46:47
使用self关键字访问类的成员。
class ABC():
var1 = '123'
def method1(self):
self.var1 = '123'
@classmethod
def callvar1(self):
print(self.var1)https://stackoverflow.com/questions/62546725
复制相似问题