新事物,边玩边学。
我想使用一个属性作为另一个属性的补充和自动化
class ShopItem:
def __init__(self, name='<unnamed>', price=000.00, utility=0, description="<undefined>"):
self.name = name
self.price = price
self.utility = utility
self.description = description
apple = ShopItem("Apple",
1.2,
2,
f"A delicious apple.\nRestores {self.utility} hp")
最后一行
想要
self.description
里面有 utility
print(apple.description)
打印:
“恢复 2 hp”
我试过了:
...{utility}...
...{self.utility}...
...{apple.utility}...
...{ShopItem.utility}...
IDE 说
... line 12, in <module>
f"A delicious apple.\nRestores {self.utility}")
^^^^
NameError: name 'self' is not defined
not defined
更改为点之前的内容
如果不强制用fstring解决问题,可以使用
format
class ShopItem:
def __init__(
self,
name='<unnamed>',
price=000.00,
utility=0,
description="<undefined>"
):
self.name = name
self.price = price
self.utility = utility
self.description = description.format(self.utility)
apple = ShopItem(
name="Apple",
price=1.2,
utility=2,
description="A delicious apple.\nRestores {} hp"
)
print(apple.description)
基本上,您正在使用占位符,并将在
__init__
的帮助下动态地更改它。