python - 访问另一个 python 文件中的类值
问题描述
# MenuItem.py
class MenuItem:
def __init__(self, name=None, types=None, price=None, description=None):
self._name = name
self._types = types
self._price = price
self._description = description
# Diner.py
class Diner(object):
STATUS = ["seated", "ordering", "eating", "paying", "leaving"]
def __init__(self, name):
self.__name = name
self.__order = []
self.__status = self.STATUS[0]
def __str__(self):
return ('Diner {} is currently {}'.format(self.__name, self.__status))
def calculateMealCost(self):
for value, key in enumerate(self.__order):
return MenuItem[value].price
我有 2 个 python 文件 MenuItems.py 和 Diner.py。我希望 calculateMealCost() 方法返回特定用餐者的总餐费,但是当我这样做时
def calculateMealCost(self):
for value, key in enumerate(self.__order):
return MenuItem[value].price
我收到此错误消息:
TypeError:“类型”对象不可下标
请问我该如何解决这个问题?
解决方案
如果这两个类在不同的文件中,假设它们在同一个目录中,那么您缺少导入语句:
from MenuItem import MenuItem
现在,为了访问您想要访问的价格实例属性,您需要已经配置了类 MenuItem 的实例:
chocolate_pie = MenuItem(price=3)
只有这样,您才能询问巧克力派的价格:
print(chocolate_pie.price)
换句话说,如果我正确理解您的代码,您需要首先将菜单上的所有项目定义为类 MenuItem 的实例,然后您将能够访问菜单上每个项目的价格属性以将价格加在一起得到你的最后一餐费用
推荐阅读
- javascript - 在javascript中将生成器作为回调传递
- python - 提高此搜索的效率以检查此列表中的任何两个数字是否相加?
- c++ - Arduino Pow() 和 Armstrong 数问题
- database - 如何使用 Mulesoft 4 为 postgresql 找到合适的驱动程序
- apache-spark - 带有 Confluent Cloud Kafka 连接问题的 Spark Structural Streaming
- vue.js - 如何使用 vuetify 使页脚与内容的宽度相同?
- angular - 角度隐藏导航箭头
- r - 包含两列的数据帧上的 dcast 问题
- apache-spark - 从大型数据集创建数据框,之前将其加载到驱动程序上
- c - 函数更改函数中不涉及的变量(在c中)