python 在子类中拓展属性

2022-05-29  本文已影响0人  孙广宁
8.8 我们想在子类中扩展某个属性,而这个属性是在父类中定义的
class Person:
    def __init__(self,name):
        self.name = name
    @property
    def name(self):
        return self.name

    @name.setter
    def name(self,value):
        if not isinstance(value,str):
            raise TypeError('Expected a String')
        self._name= value

    @name.deleter
    def name(self):
        raise AttributeError("cant delete attribute")

class SubPerson(Person):
    @porperty
    def name(self):
        print("getting name")
        return super().name

    @name.setter
    def name(self,value):
        print("setting name to",value)
        super(SubPerson,SubPerson).name.__set__(self,value)

    @name.deleter
    def name(self):
        print("deleting name")
        super(SubPerson,SubPerson).name.__delete__(self)


s = SubPerson("Guido")
print(s)
print(s.name)
s.name = "Larry"
print(s)
print(s.name)
注意
上一篇 下一篇

猜你喜欢

热点阅读