![](/img/trans.png)
[英]Initializing python dataclass object without passing instance variables or default values
[英]passing dataclass as default parameter
我有一些具有默認值的數據類:
@dataclasses.dataclass
class SomeDataclass:
field: str = ""
number: int = 3
我有一個 function 接收它作為參數。 我想讓它接收空參數,這將導致它實例化一個默認數據類。 這是我想要的行為:
def func(instance: SomeDataClass = None):
# I want to get rid of these lines
if instance is None:
instance = SomeDataClass()
如果沒有明確地這樣做,這是否可能?
如果 function 不會修改SomeDataclass
的實例,您可以放心使用
def func(instance: SomeDataClass = SomeDataclass()):
...
當對 function 的每次調用都應該獲得自己的可變值的新實例(如list
、 dict
或set
)時,使用 check-for- None
習慣用法。
否則,否:您需要一個哨兵來指示func
是否應該實例化SomeDataclass
本身。
另一種選擇是動態定義 class 並動態實例化它。
這里的主要問題是我們定義了 class 兩次。
所以我不認為它是通往 go 的方法,直到我們可以只定義一次 class 。
from dataclasses import dataclass,field
import dataclasses
@dataclass
class SomeDataClass:
f: str = 'jack'
number: int = 12
def foo(data=dataclasses.make_dataclass('SomeDataClass',[('f',str,field(default='jack')),('number', int,field(default=12))])()):
print(data)
foo()
foo(SomeDataClass('jim',33))
output
SomeDataClass(f='jack', number=12)
SomeDataClass(f='jim', number=33)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.