python - Python继承:使用父方法打印继承变量时出现属性错误
问题描述
- 我是 python 继承的新手,我遇到了一个简单的问题,就是打印出变量。
- 我有一个父类打印
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'
- 我知道我可以在 C++ 中做到这一点,但我正在挠头想弄清楚我的 python 代码哪里出了问题。
有人可以帮忙吗?谢谢!
解决方案
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)
推荐阅读
- tensorflow - 当通过“张量”损失时需要“磁带”
- skyve - 如何在 Bizlet preSave 中保存未自动保存的相关记录
- database - 将图像 url 存储在数据库中或在需要时为读取繁重的应用程序计算
- php - 如何在 Laravel 集合中使用多个 whereIn
- java - 在 Firebase 和 Android 开发方面遇到了非常困难的时期
- kubernetes - 在 Azure Kubernetes 中创建后端容器时出错
- javascript - 在线托管 node.js 脚本并从手机监控日志
- google-api - OAuth 与谷歌,但没有域名
- windows - 如何在 Windows 7 及更高版本中查看 debugview 的输出而无需重新启动计算机?
- azure - 用于显示实例名称和资源组的 Azure CLI 命令