我如何访问私有变量 "数字 "的 class B
在另 class A
在下面的代码中?
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)
在你的代码中,你想读取的是 __number
对象的领域 a
属于 A
)而不是 obj
属于 B
).
该指令 a.check()
基本上被翻译为 A.check(self=a)
. 这就意味着,里面的 check()
-方法,然后您将调用 B.get_number(self=a)
和 get_number()
-因此,该方法试图返回 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)