码迷,mamicode.com
首页 > 其他好文 > 详细

property装饰器简化类里实例set,get调用

时间:2019-08-11 12:46:41      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:相互   get   bre   span   tno   one   使用   des   main   

一般工厂函数使用set方法设置数据,get方法获取结果,例如:

 1 from collections import namedtuple
 2 
 3 class Nodes(object):
 4     def __init__(self, getIp):
 5         self.nodes = None
 6         self.node = None
 7         self.getIp = getIp
 8 
 9     def setNodes(self, nodes):
10         self.nodes = nodes
11 
12     def getNode(self):
13         for i in self.nodes:
14             if i.ip == self.getIp:
15                 self.node = i
16                 break
17         return self.node
18 
19 if __name__ == "__main__":
20     myOpt = namedtuple(node, ip port user)
21     nodes = [
22         myOpt(192.168.1.1, 22, guest),
23         myOpt(192.168.1.2, 22, guest),
24     ]
25     myNode = Nodes(192.168.1.1)
26     myNode.setNodes(nodes)
27     print(myNode.getNode())

set和get方法两者没有对应关系相互独立,另外一个坏处,随着类函数越多set和get的方法越多,不利于阅读

property:

 1 from collections import namedtuple
 2 
 3 class Nodes(object):
 4     def __init__(self, getIp):
 5         self.nodes = None
 6         self.node = None
 7         self.getIp = getIp
 8 
 9     @property
10     def getNodes(self):
11         for i in self.nodes:
12             if i.ip == self.getIp:
13                 self.node = i
14                 break
15         return self.node
16 
17     @getNodes.setter
18     def getNodes(self, nodes):
19         self.nodes = nodes
20 
21 if __name__ == "__main__":
22     myOpt = namedtuple(node, ip port user)
23     nodes = [
24         myOpt(192.168.1.1, 22, guest),
25         myOpt(192.168.1.2, 22, guest),
26     ]
27     myNode = Nodes(192.168.1.1)
28     myNode.getNodes = nodes
29     print(myNode.getNodes)

set和get方法对应的方法名相同,设置数据和获取结果调用相同的方法名

property装饰器简化类里实例set,get调用

标签:相互   get   bre   span   tno   one   使用   des   main   

原文地址:https://www.cnblogs.com/hell-west-road/p/11334518.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!