首页 > 解决方案 > 超市数据类

问题描述

from dataclasses import dataclass
from typing import Union

@dataclass
class OtherStock:
    name:str  = "gold"
    units:int = 7
    price_per_unit : float = 150000


@dataclass
class FoodStock:
    name:str = "bread"
    units:int = 2
    price_per_unit: float = 700
    expiration_date: str = "2021-02-16"


stock = Union[OtherStock,FoodStock]

def is_expired(inventory:stock,date:str)->bool:
    if type(inventory) == OtherStock:
        return False
    if date == inventory.expiration_date:
        return True
    else:
        return False

print(is_expired("bread","2021-02-16"))
print(is_expired("gold","2021-02-16"))

代码应比较 和 中的两个属性,date如果产品过期expiration_date,则应返回。不能过期,所以每次都会返回。如果我尝试运行它,我会得到一个.TrueOtherStockfalseAttributeError: 'str' object has no attribute 'expiration_date'

标签: pythonpython-dataclasses

解决方案


您的代码将字符串传递给is_expired,而不是对象。"bread"是一个字符串。

也许你想要print(is_expired(FoodStock(), "2021-02-16"))


推荐阅读