公共、受保护和私有属性的可访问性

问题描述

我有一个关于类属性不同访问级别的可访问性的问题。

我写了这段代码

class struct:
    def __init__(self,dict):
        for key in dict:
            setattr(self,'__'+key,dict[key])
        for key in dict:
            setattr(self,'_'+key,key,dict[key])

    def access_data(self):
        print(self.a)

    def access_protected_data(self):
        print(self._a)
 
    def access_private_data(self):
        print(self.__a)


mydict = {'a': 2,'b': 'abc','c': [4]}

q = struct(mydict)
q.a = 4
q.access_data()
q._a = 5
q.access_protected_data()
q.__a = 6
q.access_private_data()

程序将打印:

4
5

并设置 q.__a = 6 我不明白这种行为。我认为该程序无法在类外设置 q.__a=6,同时我希望该程序能够从类内的函数中打印 q.__a。>

你能解释一下吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)