【发布时间】:2020-09-27 21:00:03
【问题描述】:
您好,我是 Python 新手。
我以前使用过类,但没有使用过数据类。
在常规课程中,我可以通过使用其他属性来设置我的课程的属性。
并且还在初始化我的类的对象时使用函数来修改属性。
class Person:
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = self.to_upper(last_name)
self.full_name = f"{self.first_name}_{self.last_name}"
def to_upper(self, some_string):
return some_string.upper()
p1 = Person("john", "doe")
print(p1.first_name)
print(p1.last_name)
print(p1.full_name)
我也期望对数据类进行此操作,因为我认为数据类是常规类的改进版本。
from dataclasses import dataclass, field
@dataclass
class Person:
first_name: str
last_name: str = field(default_factory=to_upper)
full_name: str = field(default_factory=get_fullname)
def to_upper(self, some_string):
return some_string.upper()
def get_fullname(self, first_name, last_name):
return f"{first_name}_{last_name}"
我在这里错过了什么?
【问题讨论】:
-
来自docs.python.org/3/library/dataclasses.html#dataclasses.field
default_factorymust be a zero-argument callable
标签: python class oop python-dataclasses