python - 超市数据类
问题描述
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
,则应返回。不能过期,所以每次都会返回。如果我尝试运行它,我会得到一个.True
OtherStock
false
AttributeError: 'str' object has no attribute 'expiration_date'
解决方案
您的代码将字符串传递给is_expired
,而不是对象。"bread"
是一个字符串。
也许你想要print(is_expired(FoodStock(), "2021-02-16"))
?
推荐阅读
- c# - 使用 async-await 进行数据库查询
- vue.js - Vue:在 v-if/else 中使用 Vue 转换?
- jquery - 如何仅在图标单击时显示日历?
- java - 微服务 - 启动配置服务器 org.springframework.boot.context.properties.bind.BindResult 时出错
- javascript - 在 Reactjs 中将组件作为道具传递
- javascript - 有没有更好的方法将数组值动态插入到 Excel 工作表中?
- ios - ForEach 中的 SwiftUI 多选
- swift - 使 SwiftUI 矩形与另一个矩形具有相同的高度或宽度
- java - 如何在硒中使用VPN?
- npm - npm 预安装脚本的问题