是否可以在类型的子类中实现方法。NamedTuple?而且,属性是否被视为方法?

Is it possible to implement methods in subclass of typing.NamedTuple? And, are properties considered methods?

提问人:eddyxide 提问时间:3/3/2023 更新时间:3/3/2023 访问量:21

问:

我这样做是为了代表一个使用打字的人。NamedTuple:

from typing import NamedTuple


class Phone(NamedTuple):
    residential: str
    mobile: str


class Person(NamedTuple):
    name: str
    last_name: str
    phone: Phone

    @property
    def full_name(self) -> str:
        return f'{self.name} {self.last_name}'
    

edson = Person('Edson', 'Pimenta', Phone('1111-1111', '99999-9999'))

print(edson.full_name)  # Edson Pimenta

它奏效了。

问题是,我看到很多人说 NamedTuples 无法实现用户方法,例如,新的方法,例如会更改任何字段的方法,因为它们的字段是不可变的,就像在元组中一样。

我想在更深入地研究 Dataclasses 之前了解 NamedTuples,这样我就会知道更多“解决”原始痴迷问题的替代方案。

属性是唯一可用的选项,还是这里发生了一些我不明白的事情?

属性甚至被视为方法吗?

python-3.x 方法 属性 子类 namedtuple

评论


答: 暂无答案