【发布时间】:2019-04-05 01:34:34
【问题描述】:
我正在使用从 Python 3.7 反向移植的 Python dataclasses 模块。
我偶然发现了这种行为,其中数据类子类不继承 __repr__:
from dataclasses import dataclass
@dataclass
class Person:
name: str
def __repr__(self):
return f'{self.__class__.__qualname__}({self.name})'
def print_something(self):
return self.name
@dataclass
class Employee(Person):
title: str
这是输出
In [21]: e = Employee(name='Dmitry', title='Systems Engineer')
In [22]: p = Person(name='Dmitry')
In [23]: repr(e)
Out[23]: "Employee(name='Dmitry', title='Systems Engineer')"
In [24]: p = Person(name='Dmitry')
In [25]: repr(p)
Out[25]: 'Person(Dmitry)'
In [26]: p.print_something()
Out[26]: 'Dmitry'
In [27]: e = Employee(name='Dmitry', title='Systems Engineer')
In [28]: repr(e)
Out[28]: "Employee(name='Dmitry', title='Systems Engineer')"
In [29]: e.print_something()
Out[29]: 'Dmitry'
1) 为什么会这样?
2) 这种行为是否有解决方法(在子类中重新定义__repr__ 除外)?
【问题讨论】:
标签: python python-3.x python-dataclasses