python 3.5上有一个有趣的问题。例如,我喜欢:
class A:
__x = 0
def __init__(self, x):
self.__x = x
def set_x(self,x): __x=x
def get_x(self): return x
class B(A):
__y = 0
def __init(self, x, y)
self.__y = y
super(B, self).__init__(x)
def set_y(self,y): __y=y
def get_y(self): return y
def toString(self): return "x = {} and y = {}".format(self.__x,
self.__y);
test = B(7,3)
test.toString()
为什么我在这里有错误:“B对象没有属性_B__x”,如果方法super()
让我使用parante类的所有方法?
当然,如果我写,如:
def toString(self): return "x = {} and y = {}".format(self.get_x(),
self.__y);
效果很好!
答案 0 :(得分:0)
您无法通过super()访问私有变量/成员。 因此,为了访问B .__ x,您必须执行
def toString(self): return "x = {} and y = {}".format(self._B__x,
self.__y);