gpt4 book ai didi

python - 将 Python 属性划分为类别

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:13 25 4
gpt4 key购买 nike

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

但我不知道有没有更好的方法

最佳答案

你可能想多了这个结构,但如果你想要对象......

WanLan 不应该存在。您可以为 Category 类传递前缀,以便它搜索 ...ip_get_property 方法可以用字典代替。如果您需要即时计算值,您可以创建一个包含要调用的函数的 dict

class Category(object):
def __init__(self, parent, prefix):
self.parent = parent
self.prefix = prefix
@property
def ip(self):
self.parent.data[self.prefix + "ip"]

class Router(object):
def __init__(self, data):
self.lan = Category(self, 'lan')
self.wan = Category(self, 'wan')
self.data = data

顺便说一下,这个程序根本不需要任何类。好像你只需要字典。如果需要,您可以创建一个函数来构建这些词典

router = {'wan': {'ip': '1.2.3.4'}, 'lan': {'ip': '2.3.4.5'}}

关于python - 将 Python 属性划分为类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11274918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com