【问题标题】:unable to access private data in a particular class无法访问特定类中的私有数据
【发布时间】:2022-12-12 15:04:26
【问题描述】:
class one:
    __x=20  #private
    def fun1(self):
        print(self.__x)
class two(one):
    y=200  #public
    def fun2(self):
        print(one.__x+self.y)

t1=two()
t1.fun1()
t1.fun2()

我试图访问 fun2 但它没有打印。我知道它采用私有数据形式,但需要帮助才能了解访问该数据的方法。我应该明确地更改表格还是我们仍然可以访问该数据?

【问题讨论】:

  • 抛开名称修改是否“私有”的问题,你为什么制作如果你是私人的不想要给你的行为?
  • 谷歌术语“Python name mangling”。 Python 有意将所有以双分数开头(但不以双下划线结尾)的类变量和方法的名称转换为特殊形式,以便它们不会被另一个类意外访问。正如@user2357112 所说,如果您不想将其设为私有,为什么要将其设为私有?

标签: python function oop private


【解决方案1】:

只需如下修改你的类二,你就可以访问私有变量 x

>>> class two(one):
...     y = 200
...     def fun2(self):
...             print(self._one__x + self.y)
... 
>>> x = two()
>>> x.fun2()
220
>>> x.fun1()
20

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-18
    • 2011-03-14
    • 2020-02-07
    • 2021-12-25
    • 2013-04-02
    • 1970-01-01
    • 2021-11-08
    • 2014-06-05
    相关资源
    最近更新 更多