没有构造函数的类(Python)

时间:2014-04-06 14:17:39

标签: python

鉴于我需要操作机器,我需要一个 VendingMachine类:

属性是存储食品的库存(清单)。

方法:

构造函数不接受任何参数 get_stock_names():返回表示名称的字符串列表 库存中的所有食品。 load(food):将Food对象添加到库存

和其他人,

#predefined
class Food(object):
    def __init__(self, name, nutrition, good_until):
        self.name = name
        self.nutrition = nutrition
        self.good_until = good_until
        self.age = 0
    def get_name(self):
        return str(self.name)
    def get_age(self):
        return self.age
    def get_nutrition(self):
        if self.age <= self.good_until:
            return self.nutrition
        else:
            return 0
    def ripen(self, days):
        self.age = self.age + days
        return self.age
    def is_spoiled(self):
        return self.good_until < self.age

#my code below

class VendingMachine:
    def __init__(self):
    Property = Food.get_name   #no clue how to make a Property
    self.load = Food.load       #same here
    def get_stock_names(self, Property):
        lst = []
        for i in Food:
            i = str(i)
            lst.append(i)
        return lst
    def has_stock(self, name):
        return name in Property
    def load(self, food):
        Property.append(food)
        return Property
    def sell(self, name):
        if name in Property:
            Property.remove(name)
            return name
        else:
            return None

我得到的是什么 AttributeError:&#39; VendingMachine&#39;对象没有属性&#39; load&#39; (变量)

1 个答案:

答案 0 :(得分:1)

我很确定你误解了你的指示行,告诉你有关stock财产的信息。我怀疑它只是告诉你创建一个名为self.stock的实例变量,它包含Food个实例的列表。由于构造函数不带参数,因此它可能是空的。使用术语“属性”看起来像是一个红色的鲱鱼,因为property在Python中具有特定的含义(一种使它看起来像属性的方法的包装),这在这种情况下没有多大意义。

无论如何,这就是我认为你想要你的构造函数的样子:

def VendingMachine(object):
    def __init__(self):
        self.stock = [] # initially empty

您以后的方法可以根据需要检查或操纵self.stock