Vla*_*llo 4 python python-3.7 python-dataclasses
这是我在python 3.6中的代码
class A(object)
def __init__(self, a: str):
self._int_a: int = int(a) # desired composition
def get_int_a(self) -> int:
return self._int_a
Run Code Online (Sandbox Code Playgroud)
我想重写这段代码python 3.7,我如何self._int_a: int = int(a)用dataclasses模块初始化?
我知道我可以做类似的事情,但我不知道如何初始化_a: int = int(a)或类似。
from dataclasses import dataclass
@dataclass
class A(object):
_a: int = int(a) # i want to get initialized `int` object here
def get_int_a(self) -> int:
return self._a
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的想法和建议。
完全取消 getter 和 setter,只使用属性访问。我们可以定义一个接受字符串的init only 字段,然后在我们的__post_init__调用中将该字符串转换为整数字段。
from dataclasses import dataclass, InitVar, field
@dataclass
class A:
temp: InitVar[str]
a: int = field(init=False)
def __post_init__(self, temp):
self.a = int(temp)
x = A("1")
print(type(x.a), x.a)
# <class 'int'> 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4166 次 |
| 最近记录: |