我有一个包含大量属性的类。更具体地说,类代表我的路由器。 我想将其属性划分为类别,这意味着为了检索LAN ip和WAN ip,我不必键入:
router.wan_ip
router.lan_ip
而是键入:
router.wan.ip
router.lan.ip
这些属性是动态的,在调用它们的函数时会被检索。我当前的实现:
class Category(object):
def __init__(self, parent):
self._parent = parent
class Lan(Category):
@property
def ip(self):
self._parent._get_property("lanip")
class Wan(Category):
@property
def ip(self):
self._parent._get_property("wanip")
class Router(object):
def __init__(self, ):
self.lan = Lan(self)
self.wan = Wan(self)
def _get_property(self, property_name):
# Some code here
但如果有更好的办法我会的
我认为可以将描述符[1]用于唯一的Category类。你知道吗
[1]http://docs.python.org/reference/datamodel.html#descriptors
您可以使用^{} ,通过检查属性的名称,并将其映射到实际属性,来访问实际上不存在的属性。你知道吗
你可能想得太多了,但是如果你想要对象。。。你知道吗
Wan
和Lan
不应存在。可以为Category
类传递前缀,以便它搜索...ip
。_get_property
方法可以被字典代替。如果需要动态计算值,可以创建一个dict
,其中包含要调用的函数。你知道吗顺便说一下,这个程序根本不需要上课。好像你只需要字典。如果需要,可以创建一个函数来构建这些词典
相关问题 更多 >
编程相关推荐