python - Python - 链接getter和setter时无法调用NoneType对象
问题描述
我正在尝试使用@property 和@propertyName.setter 来获取/设置不同属性的值,但是当我链接多个访问器时会遇到以下问题。
这是一个简单的例子,我可以重现我的问题:
class Toto:
def __init__(self):
self._name = None
self._label = None
@property
def name(self):
return self._name
@name.setter
def name(self, value):
self._name = value
class Tata:
def __init__(self):
self._toto = Toto()
@property
def toto(self):
return self._toto
@toto.setter
def toto(self, value):
self._toto = value
当我执行这个:
tata = Tata()
print("Toto name is", tata.toto.name)
tata.toto.name("titi")
print("Toto name is", tata.toto.name)
我收到以下错误:
Toto name is None
Traceback (most recent call last):
File "/home/radjanidar/projects/music/demo/src/main/script/chainedproperties.py", line 43, in <module>
tata.toto.name("titi")
TypeError: 'NoneType' object is not callable
为什么我不能在对象 Toto 上使用 setter 方法?
解决方案
这不是你使用属性的方式。基本上,属性是使函数调用像属性一样的方法。在获取和设置它们时,分别调用修饰的 getter 和 setter,而不是执行简单的属性查找。
因此,您想要tata.toto.name = 'titi'
.
推荐阅读
- python - 使用熊猫处理列中的缺失值
- jquery - 有没有办法像 Word 插件一样将 Excel 内容作为 HTML/Text 获取?
- javascript - VueJS Hotel Datepicker:通过事件侦听器获取选定日期的问题
- html - 引导固定表头的表头宽度
- flutter - 如何创建自定义信息 windows google map flutter?
- c++ - 有没有办法以编程方式设置磁盘签名,而不是磁盘部分
- javascript - 如何更新分页的 jQuery DataTables 数据并显示它
- ios - 导出 Swift 框架以在 Objective-C 中使用
- javascript - React 找不到模块
- c# - C# Webdriver FindsBy - 用于剑道元素