首页 > 解决方案 > Python继承:使用父方法打印继承变量时出现属性错误

问题描述

  1. 我是 python 继承的新手,我遇到了一个简单的问题,就是打印出变量。
  2. 我有一个父类打印
class prints:
   def __init__(self):
       self.__name = ""
   def getName(self):
       return self.__name

class A(prints):
   def __init__(self):
       self.__name = "A"

a = A()
n = a.getName()

print(n)

我有一个错误

 AttributeError: 'A' object has no attribute '_prints__name'

有人可以帮忙吗?谢谢!

标签: pythoninheritance

解决方案


Python 没有实现私有变量,但它确实有助于降低名称与您希望对类保持私有的变量发生冲突的风险。如果您的实例变量以两个下划线开头,python 将在类名前添加。请参阅私有变量中的“名称修改” 因此,该prints __name变量被重命名_prints__name

此方法有效,除非无效。继承的类没有自然的方式来获取变量。通常这不是问题,因为它毕竟是类私有的。使用它的一种方法是调用基类中的方法。在这种情况下,您可能应该调用基类__init__来设置变量。但是如果你想直接使用它,你可以这样做self._prints__name

class prints:
   def __init__(self):
       self.__name = ""
   def getName(self):
       return self.__name

class A(prints):
   def __init__(self):
       self._prints__name = "A"

a = A()
n = a.getName()

print(n)

推荐阅读