小编use*_*025的帖子

为什么我的 Python 数据类没有正确初始化布尔值?

我目前正在为期权定价编写一些代码,同时我一直在尝试使用 Python 数据类进行试验。这里我有两个类,Option()and Option2(),前者用数据类语法编写,后者用传统类语法编写。

from dataclasses import dataclass, field
from typing import Optional

@dataclass
class Option:
    is_american: Optional[bool] = field(default=False)
    is_european: Optional[bool] = not is_american

class Option2:
    def __init__(is_american=False):
        self.is_european = not is_american

if __name__ == "__main__":
    eu_option1 = Option()
    print(f"{eu_option1.is_european = }")
    
    eu_option2 = Option2()
    print(f"{eu_option2.is_european = }")
Run Code Online (Sandbox Code Playgroud)

输出给出

eu_option1.is_european = False
eu_option2.is_european = True
Run Code Online (Sandbox Code Playgroud)

然而,非常奇怪的事情发生了。注意在这种Option2()情况下,默认情况下is_american是如何设置False的,因此is_european必须是True并且确实如此,所以这是预期的行为。

但在这种dataclass Option()情况下,is_americanFalse默认设置为。但是,无论出于何种原因,数据类都没有触发is_european: Optional[bool] …

python boolean python-3.x python-dataclasses

1
推荐指数
1
解决办法
54
查看次数

标签 统计

boolean ×1

python ×1

python-3.x ×1

python-dataclasses ×1