Python 在类之外更改类属性值
我有一个这样的图书馆:Python 在类之外更改类属性值,python,Python,我有一个这样的图书馆: class Robot: __counter = 0 @classmethod def get_c(cls): result = cls.__counter + 1 return result 我试图通过初始化class属性u counter=1来访问这个类,这样我就可以从get_c()函数中得到2。 这就是我所做的: Robot.__counter = 1 x = Robot() x.get_c() 为什么结
class Robot:
__counter = 0
@classmethod
def get_c(cls):
result = cls.__counter + 1
return result
我试图通过初始化class属性u counter=1来访问这个类,这样我就可以从get_c()函数中得到2。
这就是我所做的:
Robot.__counter = 1
x = Robot()
x.get_c()
为什么结果仍然是1,在不触及类内部的情况下做我想做的事情的解决方案是什么
谢谢 你已经用过了。每次你这样做的时候都会翻译:
__some_var
在类定义的内部,插入:
这就是全部要点——避免子类中的名称冲突
如果您想像这样在类之外访问它,请不要使用双下划线名称
我不确定您所说的“不在内部接触类”的确切含义,但在这种情况下:
Robot._Robot__counter = 1
虽然这样做是一个标志,但你不应该使用双下划线名称
顺便说一句,这并不等同于带有访问修饰符的语言中的“private”,尽管它在有限的用例中也有相同的用途,防止子类中的意外名称冲突。您已经使用过。每次你这样做的时候都会翻译:
__some_var
在类定义的内部,插入:
这就是全部要点——避免子类中的名称冲突
如果您想像这样在类之外访问它,请不要使用双下划线名称
我不确定您所说的“不在内部接触类”的确切含义,但在这种情况下:
Robot._Robot__counter = 1
虽然这样做是一个标志,但你不应该使用双下划线名称
顺便说一句,这并不等同于带有访问修饰符的语言中的“private”,尽管它在有限的用例中也有同样的用途,防止子类中的意外名称冲突。为什么,为什么,你使用双下划线名称混乱?为什么,为什么,你使用双下划线名称混乱?