Python 3.7: 用dataclasses模块初始化对象?
Python 3.7: Initialize objects with dataclasses module?
这是我在 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
我想在 python 3.7
中重写这段代码,如何用 dataclasses
模块初始化 self._int_a: int = int(a)
?
我知道我可以做类似的事情,但我不知道如何初始化 _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
提前感谢您的想法和建议。
完全取消 getter 和 setter,只使用属性访问。我们可以定义一个 init only field that accepts a string and then convert that string to an integer field in our __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
这是我在 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
我想在 python 3.7
中重写这段代码,如何用 dataclasses
模块初始化 self._int_a: int = int(a)
?
我知道我可以做类似的事情,但我不知道如何初始化 _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
提前感谢您的想法和建议。
完全取消 getter 和 setter,只使用属性访问。我们可以定义一个 init only field that accepts a string and then convert that string to an integer field in our __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