大量のプロパティを含むクラスがあります。より具体的には、クラスはルーターを表します。そのプロパティをカテゴリに分けたいと思います。つまり、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
しかし、もっと良い方法があれば、私は傷つきます