覆盖属性

时间:2018-12-17 21:13:46

标签: python python-3.x

在基类中,我正在使用property()函数创建属性:

from abc import ABCMeta, abstractmethod

class Person(metaclass=ABCMeta):

    @abstractmethod
    def __init__(self, name, telephone):
        self.name = name
        self.telephone = telephone

    def get_name(self) -> str:
        return self.__name

    def set_name(self, value: str):
        self.__name = value

    name = property(fget=get_name, fset=set_name)

在派生类中,我需要重写set_name方法,即Person.name.fset应指向该方法的修改版本。我试过了,但是没用:

class Employee(Person):

    def __init__(self, name, telephone, email):
        super().__init__(name, telephone)
        self.email = email

    def set_name(self, value):
        super().set_name('override')

    Person.name.fset = set_name

有什么方法可以覆盖python中的属性吗?

0 个答案:

没有答案