gpt4 book ai didi

python - 如何访问对象中的私有(private)变量

转载 作者:太空宇宙 更新时间:2023-11-03 13:22:13 25 4
gpt4 key购买 nike

我想修改一个对象的私有(private)变量

class Example():
__myTest1 = 1
__myTest2 = 1
def __init__(self):
pass
def modifyTest(self, name = 'Test1', value):
setattr(self, '__my'+name, value);

我试过上面的代码,似乎无法访问私有(private)变量,

AttributeError: Example instance has no attribute '__myTest1'

有什么方法可以修改私有(private)变量吗?

最佳答案

从外部访问:

e = Example()
e._Example__myTest1 # 1

由于私有(private)变量name mangling rules .

但如果您需要访问私有(private)成员,则表明您的设计存在问题。

如果您需要从类本身访问或更新它:

class Example():
__myTest1 = 1
__myTest2 = 1
def __init__(self):
pass

@classmethod
def modifyTest(cls, value, name="Test1"):
setattr(cls, '_%s__my%s' % (cls.__name__, name), value)

必须这样做,因为它是私有(private)类静态变量而不是私有(private)实例变量(在这种情况下它会很简单)

关于python - 如何访问对象中的私有(private)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9990454/

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