[英]Setter doesn't fire when setting property inside init
我如何解决此问题,以便在初始化新的TreeNode并将其传递给属性节点时触发“ setter”事件?
class TreeNode( QtGui.QTreeWidgetItem ):
def __init__( self, parent, node ):
super( TreeNode, self ).__init__( parent )
self._node_object = node
@property
def node_object(self):
return self._node_object
@node_object.setter
def node_object(self, value):
self._node_object = value
self.setText( 0, self._node_object.name )
print "set data"
这不会触发setter事件。
node_object = Faction("Doug")
tree_node = TreeNode(self.node_tree, node_object)
但是,这将触发事件……但是理想情况下,我想直接将Node传递给TreeNode。
node_object = Faction("Doug")
tree_node = TreeNode(self.node_tree, None)
tree_node.node_object = node_object
更新
这是设置它的正确方法吗?
class TreeNode( QtGui.QTreeWidgetItem ):
def __init__( self, parent, node ):
super( TreeNode, self ).__init__( parent )
self.node_object = node
@property
def node_object(self):
return self._node_object
@node_object.setter
def node_object(self, value):
self._node_object = value
self.setText( 0, self._node_object.name )
print "set data"
好吧,您可以通过直接分配给基础属性来规避setter。 如果要调用设置器,请分配给设置器 :
self.node_object = node
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.