簡體   English   中英

如何在方法 - 字典中返回給定鍵的值

[英]How to return the value of given key in method - dictionary

我想寫一個簡單的自動售貨機。 我有Container類,其中包含項目和類項目包含獎品和金額等信息。 ID標識該項目。 每個調用添加項都會將ID遞增1,因此每個項都是唯一的。 我想獲得給定身份證的獎品。 所以例如:我添加項目,它有ID = 30,我給ID,它返回它的獎品。

我試過這樣的東西,但它不起作用:

from Item import Item

class Container:
    id = 30

    def __init__(self, objects=None):
        if objects is None:
            objects = {}
        self.objects = objects

    def add_object(self, obj: Item):
        self.objects.update({id: obj})
        Container.id = container.id + 1

    def get_length(self):
        return len(self.objects)

    def find_price_of_given_id(self, id):
        # return self.objects.get(id).get_price()
        pass


Cola = Item(20)
print(Cola.get_amount())
container = Container()
container.add_object(Cola)
print(container.objects.items())

物品類:

class Item:
    def __init__(self, price,amount=5):
        self.amount = amount
        self.price = price

    def get_price(self):
        return self.price

    def get_amount(self):
        return self.amount

我不知道為什么print(container.objects.items())返回dict_items([(<built-in function id>, <Item.Item object at 0x00000000022C8358>)]) ,為什么不ID = 30 + Item對象

  1. id是內置方法的名稱。 不要將它用作變量名稱 - 導致名稱混淆。

  2. 您在容器類中分配了id,但從未將其返回,以便人們可以使用id查找項目。

  3. 在python3中, dict.items返回一個dict_items迭代器,因此你需要迭代它以獲取其中的項目。

class Item:
    def __init__(self, price, amount=5):
        self.amount = amount
        self.price = price

    def get_price(self):
        return self.price

    def get_amount(self):
        return self.amount

    def __str__(self):
        return f"{self.amount} @ {self.price}"


class Container:
    item_id = 30

    def __init__(self, objects=None):
        if objects is None:
            objects = {}
        self.objects = objects

    def add_object(self, obj: Item):
        id_to_assign = Container.item_id
        self.objects.update({id_to_assign: obj})
        Container.item_id = Container.item_id + 1
        return id_to_assign

    def get_length(self):
        return len(self.objects)

    def find_price_of_given_id(self, item_id):
        return self.objects.get(item_id).get_price()


Cola = Item(20)
print(Cola.get_amount())
container = Container()
cola_id = container.add_object(Cola)
print(container.objects.items())
print(container.find_price_of_given_id(cola_id))

輸出:

5
dict_items([(30, <__main__.Item object at 0x104444b00>)])
20

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM