python - 覆盖在python中没有getter或setter的属性
问题描述
我的代码:
class parent(object):
@property
def value(self):
return self.val
class child(parent):
#__init__
@parent.value.setter
def value(self):
return self.get_val()
此代码没有将属性值设置为 self.get_val() ,而是使用在父级中设置的旧值。
在这里,父类没有特定的 setter 方法,但我需要在子类中将属性设置为不同的值。我该怎么做 ?请帮忙。
解决方案
正如评论中提到的,您的设置器的代码不正确。
这是一个有效的解决方案:
class Parent(object):
def __init__(self, val):
self.val = val
@property
def value(self):
return self.val
class Child(Parent):
@Parent.value.setter
def value(self, val):
self.val = val + " overridden"
parent = Parent("initial")
print(parent.value)
child = Child("initial")
print(child.value)
child.value = "new value"
print(child.value)
产生
initial
initial
new value overridden
推荐阅读
- python - 按顺序排列到 JSON 的列表列表?
- python - Tkinter 球没有动画?
- android - Autocompletetext 没有出现 Android Studio
- ios - 在 Swift4 中取消选中 TableView 所有 TableView 选择
- multithreading - 用于更新 MFC 应用程序窗口的 C++11 线程。需要 SendMessage()、PostMessage() 吗?
- javascript - 从多个页面访问 Firebase 用户
- c# - 无法反转列表
内部 foreach - css - 谷歌地图边界半径在移动设备上不受尊重
- sql - 重复打印某些字符
- mapreduce - Hadoop 历史服务器是如何工作的?