python - 在操作变量值的情况下如何使用多重继承
问题描述
class Electronicdevice():
Devices = 100
class Pocketgadgets(Electronicdevice):
Pocketdevices = 40
class Phone(Pocketgadgets):
#Phones = Devices - Pocketdevices
pass
Samsung = Electronicdevice()
Galaxy = Pocketgadgets()
SamsungGalaxyS21 = Phone()
print(SamsungGalaxyS21.Devices)
在这种情况下,我得到预期的输出为 100,因为它继承了电子设备类的值。
但万一,我尝试执行以下操作,我收到错误“NameError:名称'设备'未定义”
class Electronicdevice():
Devices = 100
class Pocketgadgets(Electronicdevice):
Pocketdevices = 40
class Phone(Pocketgadgets):
Phones = Devices - Pocketdevices
pass
Samsung = Electronicdevice()
Galaxy = Pocketgadgets()
SamsungGalaxyS21 = Phone()
print(SamsungGalaxyS21.Phones)
期望得到值 60 作为输出。有人可以帮忙吗?
解决方案
您可以尝试以下解决方案:
解决方案一:variables
通过class
class Electronicdevice:
Devices = 100
class Pocketgadgets(Electronicdevice):
Pocketdevices = 40
class Phone(Pocketgadgets):
Phones = Electronicdevice.Devices - Pocketgadgets.Pocketdevices
Samsung = Electronicdevice()
Galaxy = Pocketgadgets()
SamsungGalaxyS21 = Phone()
print(SamsungGalaxyS21.Phones)
60
NB: this example is independent of the inheritance, that is, even if you don't inherit from **Pocketgadgets** class, it will still work.
解决方案 2 :variables
通过instance
class
class Electronicdevice:
Devices = 100
class Pocketgadgets(Electronicdevice):
Pocketdevices = 40
class Phone(Pocketgadgets):
def __init__(self):
self.Phones = self.Devices - self.Pocketdevices
Samsung = Electronicdevice()
Galaxy = Pocketgadgets()
SamsungGalaxyS21 = Phone()
print(SamsungGalaxyS21.Phones)
60
推荐阅读
- java - 使用 java 中的 apache poi 在 Doc 文件中的表格单元格中输入文本
- hibernate - 在 Spring Data JPA 中选择带有动态列的查询
- google-drive-api - Google drive api Files:获取未列出完整元数据
- python - 从列出的目录中压缩目录
- c# - 在我们的 .net 项目中更改 MSBuild 工具集 (ToolsVersion) 的缺点是什么?
- typescript - 使用反应表 CellPropGetter
- linux - Netcat:使用脚本测试端口是否从给定的源主机打开到使用 netcat 的远程主机
- xamarin - 有没有办法可以使用 Xamarin 表单向 Shell 选项卡区域添加左右边距?
- pyspark - 当一列中的值在另一列中时标记数据
- android - 检索访问令牌 Firebase