我可以在另一个属性的 f 字符串中引用类属性吗

问题描述 投票:0回答:1

新事物,边玩边学。

我想使用一个属性作为另一个属性的补充和自动化

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
更改为点之前的内容

python python-3.x class attributes
1个回答
0
投票

如果不强制用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__
的帮助下动态地更改它。
    

© www.soinside.com 2019 - 2024. All rights reserved.