Python 数据类 AttributeError

Mat*_*098 7 python python-dataclasses

我有一个这样设置的数据类:

from dataclasses import dataclass, field
from typing import List

@dataclass
class stats:
    target_list: List[None] = field(default_factory=list)
Run Code Online (Sandbox Code Playgroud)

当我尝试像这样比较列表的内容时:

if stats.target_list == None:
    pass
Run Code Online (Sandbox Code Playgroud)

我得到 AttributeError: type object 'stats' has no attribute 'target_list'

我该如何解决这个问题?谢谢

lar*_*sks 6

target_list您正在尝试查找以类本身命名的属性。您想要测试该类的对象。例如:

from dataclasses import dataclass, field
from typing import List

@dataclass
class stats:
    target_list: List[None] = field(default_factory=list)


def check_target(s):
    if s.target_list is None:
        print('No target list!')
    else:
        print(f'{len(s.target_list)} targets')


StatsObject1 = stats()
StatsObject2 = stats(target_list=['a', 'b', 'c'])

check_target(StatsObject1)
check_target(StatsObject2)

Run Code Online (Sandbox Code Playgroud)

  • 请注意,您应该使用“is”而不是“==”来测试“None”,并且“target_list”永远不会是“None”(如果未设置,它将是一个空列表)。我已经更新了答案中的示例,使其更加完整。 (2认同)