在 python 中的另一个 class 中访问一个 class 的私有变量

Accessing private variable of one class in another class in python

如何在下面的代码中访问另一个 class Aclass B 的私有变量 'number'?

    class A:
            def write(self):
                print("hi")

            'It should print the private variable number in class B'
            def check(self):
                print(B.get_number(self))'error occurs here'

        class B:
            def __init__(self,num):
                self.__number = num 

            'accessor method'
            def get_number(self):
                return self.__number

        #driver code        
        obj = B(100)
        a = A()
        a.write()
        a.check()

我得到的错误信息是'A' object has no attribute '_B__number'

您可以通过更改 check 方法来接收 B 对象。

尝试:

class A:
    def write(self):
        print("hi")

    def check(self,b):
        print(b.get_number())

class B:
    def __init__(self, num):
        self.__number = num

    'accessor method'

    def get_number(self):
        return self.__number

obj = B(100)
a = A()
a.write()
a.check(obj)

在您的代码中,您试图读取对象 a(属于 class A)的 __number 字段而不是 obj(属于 class B)。

指令a.check()基本上被翻译成A.check(self=a)。这意味着在 check() 方法中您随后调用 B.get_number(self=a),因此 get_number() 方法尝试 return a.__number(不存在) .

您可能想要做的是:

    class A:
        def check(self, other):
            print(B.get_number(other)) # <- NOT "self"!

    class B:
        ...

    obj = B(100)
    a = A()
    a.write()
    a.check(obj)