在 python 中的另一个 class 中访问一个 class 的私有变量
Accessing private variable of one class in another class in python
如何在下面的代码中访问另一个 class A
中 class 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)
如何在下面的代码中访问另一个 class A
中 class 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)