簡體   English   中英

將數據類作為默認參數傳遞

[英]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 的每次調用都應該獲得自己的可變值的新實例(如listdictset )時,使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM