为属性设置默认值时,我可以调用在类外部定义的函数,但不能调用类内定义的方法。
请参阅下面的示例。
进口:
from dataclasses import dataclass, field
Run Code Online (Sandbox Code Playgroud)
call_that()外部定义工作正常:
def call_that():
return -1
@dataclass
class Foo:
myvar : int = field(default_factory = call_that)
Foo()
Run Code Online (Sandbox Code Playgroud)
返回“Foo(myvar=-1)”
但call_this()里面定义了
@dataclass
class Foo:
myvar : int = field(default_factory = call_this)
def call_this():
return 1
Foo()
Run Code Online (Sandbox Code Playgroud)
返回“NameError:名称'call_this'未定义”