在子类中访问超类中的私有成员变量是不被推荐的,因为私有成员变量的目的是限制对它们的访问。但是,如果确实需要在子类中访问超类中的私有成员变量,可以使用以下方法:
class SuperClass:
def __init__(self):
self.__private_var = "Private Variable"
def get_private_var(self):
return self.__private_var
class SubClass(SuperClass):
def __init__(self):
super().__init__()
def access_private_var(self):
return self.get_private_var()
sub_class = SubClass()
print(sub_class.access_private_var())
__getattr__
方法。class SuperClass:
def __init__(self):
self.__private_var = "Private Variable"
class SubClass(SuperClass):
def __init__(self):
super().__init__()
def __getattr__(self, name):
if name == "private_var":
return self._SuperClass__private_var
raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{name}'")
sub_class = SubClass()
print(sub_class.private_var)
请注意,这些方法可能会破坏封装原则,因此应谨慎使用。在实际开发中,最好遵循面向对象编程的最佳实践,并尽量避免访问私有成员变量。
领取专属 10元无门槛券
手把手带您无忧上云