python - 覆盖属性
问题描述
在一个基类中,我正在创建一个具有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中的属性?
解决方案
推荐阅读
- html - tailwindcss 中的导航栏转换
- python - BeautifulSoup - 从 HTML 中去除不间断的空格
- java - 如何使用我的比较器对 TreeSet 中的重复项进行排序和避免重复?
- list - 如何在方案中编写程序来查找数字列表的因子
- java - Java AffineTransform 在不同系统上的工作方式不同
- javascript - HTML嵌入链接中对应于100vh的动态iframe?
- python - 如何在python中自动化图像截图过程?
- python - python ctypes中int32_t和char数组的复杂结构
- google-cloud-platform - 谷歌云存储 | Artifactory 不删除存储桶中的对象
- reactjs - 在 React 中查找文件