除了名称之外,这些类之间还有什么区别吗
class WithClass ():
def __init__(self):
self.value = "Bob"
def my_func(self):
print(self.value)
class WithoutClass ():
value = "Bob"
def my_func(self):
print(self.value)
如果我使用或不使用__init__
方法来声明变量value
,有什么区别吗
我主要担心的是,我会以一种方式使用它,而这会给我带来更多的问题
Tags:
我想在我在这个线程和this thread(它引用了这个)中读到的响应中添加一些东西
免责声明:这句话来自于我进行的实验
变量在
__init__
之外:事实上,这些变量是静态类变量,因此可以访问类的所有实例
变量在
__init__
中:这些实例变量的值只能由手头的实例访问(通过
self
引用)我的贡献:
<> P>>程序员在使用静态类变量说明:
在此之前,我认为声明变量的两种方式完全相同(愚蠢的我),这部分是因为我可以通过
self
引用访问这两种变量。现在,当我遇到麻烦时,我研究了这个话题并澄清了它通过
self
引用是指如果没有同名的实例变量,它只引用静态类变量,更糟糕的是,它试图通过self
重新定义静态类变量引用不起作用,因为创建了一个实例变量,该实例变量会隐藏以前可访问的静态类变量为了解决这个问题,您应该始终通过类的名称引用静态类变量
示例:
输出:
我希望这对某人有帮助
在
__init__
之外设置的变量属于该类。它们被所有实例共享在
__init__
(和所有其他方法函数)内创建并以self.
开头的变量属于对象实例没有自我
创建一些对象:
我可以更改c1实例,不会影响c2实例:
但是如果我更改foo类,该类的所有实例也将更改:
请注意Python作用域是如何工作的:
与自我
更改类不会影响实例:
相关问题 更多 >
编程相关推荐