首页 > 解决方案 > 访问另一个 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:“类型”对象不可下标

请问我该如何解决这个问题?

标签: pythonpython-3.x

解决方案


如果这两个类在不同的文件中,假设它们在同一个目录中,那么您缺少导入语句:

from MenuItem import MenuItem

现在,为了访问您想要访问的价格实例属性,您需要已经配置了类 MenuItem 的实例:

chocolate_pie = MenuItem(price=3)

只有这样,您才能询问巧克力派的价格:

print(chocolate_pie.price)

换句话说,如果我正确理解您的代码,您需要首先将菜单上的所有项目定义为类 MenuItem 的实例,然后您将能够访问菜单上每个项目的价格属性以将价格加在一起得到你的最后一餐费用


推荐阅读