gpt4 book ai didi

python - 如何在方法中同时访问 cls 和 self

转载 作者:太空宇宙 更新时间:2023-11-03 14:08:03 24 4
gpt4 key购买 nike

我想要有这样的代码

class myClass:

def __init__(self):
self.__var1 = 'var1'

var2 = 'var2'

def myNormalMethod(self):
print(self.__var1)

@classmethod
def myClassMethod(cls):
print(cls.__var2)

#How do I do this?
def myMethod():
print(self.__var1)
print(cls.__var2)

现在 final 方法不起作用,因为我不知道如何访问 selfcls。我该如何实现?

最佳答案

作为一个非常的简短回顾,self 指的是类的当前实例,而 cls 变量附加到类 itelf,即,在每个实例之间共享。以下是一些有助于解决此问题的引用资料,以及我如何找到您的解决方案:

我修改了您的示例代码以说明差异并包含一个解决方案:

class MyClass:
__var2 = 'var2'
var3 = 'var3'

def __init__(self):
self.__var1 = 'var1'

def normal_method(self):
print(self.__var1)

@classmethod
def class_method(cls):
print(cls.__var2)

def my_method(self):
print(self.__var1)
print(self.__var2)
print(self.__class__.__var2)


if __name__ == '__main__':
print(MyClass.__dict__['var3'])

clzz = MyClass()
clzz.my_method()

__var2var3 是保存到类中的变量。您可以通过代表 namespace 的 __dict__ 访问任何没有实例的类变量。

由于类变量成为每个实例的一部分,您只需调用 self 即可访问它们。或者,您可以显式调用 self.__class__.__var2 以明确预期变量的实际存储位置。

关于python - 如何在方法中同时访问 cls 和 self,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41832232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com