我有一个包含大量属性的类。更具体地说,该类代表我的路由器。我想将其属性划分为类别,这意味着为了检索 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
但如果有更好的方法,我会更伤心