例如,我有這個類:
from dataclasses import dataclass
@dataclass
class Example:
name: str = "Hello"
size: int = 10
我希望能夠在每次實體化時回傳此類的字典,而無需呼叫 to_dict 函式、 dict或 dataclasses.asdict,例如:
e = Example()
print(e)
{'name': 'Hello', 'size': 5}
我嘗試過但沒有作業的是從 dict 和 callint dict 中迭代。在 Example 的 init 里面,好像不認識名字和大小
有一個很好的解決方案嗎?
編輯:我的目標是 type(e) 將是 dict 而不是 str,從init回傳dict是不可能的,而且,鍵和值應該動態獲取,名稱和大小的值可能會根據實體而改變
uj5u.com熱心網友回復:
python 類可以提供特定的方法來創建字串表示:
def __str__(self):
與 toString() java 方法相同。
uj5u.com熱心網友回復:
覆寫__str__方法:
from dataclasses import dataclass
@dataclass
class Example:
name: str = "Hello"
size: int = 10
def __str__(self):
return repr(self.__dict__)
e = Example()
print(e) # Use __str__ method
輸出:
{'name': 'Hello', 'size': 10}
uj5u.com熱心網友回復:
這是使用的解決方案__new__
from dataclasses import dataclass
@dataclass
class Example:
name: str
size: int
def __init__(self, name, size):
self.name = name
self.size = size
def __new__(cls, *args, **kwargs):
return kwargs
e = Example(**{"name":"Hello", "size":10})
print(e)
>>>> out :
>>>> {'name': 'Hello', 'size': 10}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/435535.html
上一篇:物件屬性的深度計數
