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”,尽管它在有限的用例中也有同样的用途,防止子类中的意外名称冲突。

为什么,为什么,你使用双下划线名称混乱?为什么,为什么,你使用双下划线名称混乱?