【发布时间】:2018-07-18 07:34:35
【问题描述】:
我想知道我是否有:
class A(object):
def __init__(self):
self.attribute = 1
self._member = 2
def _get_member(self):
return self._member
def _set_member(self, member):
self._member = member
member = property(_get_member, _set_member)
class B(object):
def __init__(self):
self._member = A()
def _get_a_member(self):
return self._member.member
def _set_a_member(self, member):
self._member.member = member
member = property(_get_a_member, _set_a_member)
我是否可以避免为 A.member 编写 get/setter,而只引用 A 对象的属性或属性?
get/setter 在哪里执行逻辑,当然需要它,但如果我只是不想公开成员属性的成员/属性,那么编写 get/setter 似乎是开销。
我认为即使我可以内联编写 get/setters 也会有所帮助?
【问题讨论】:
-
OP 中缺少的一些上下文:我试图隐藏 A 类的具体实现,因为它是第 3 方实现,我希望能够在后期,与其他一些第 3 方实施。具体来说,B 在 NIPAP IPAM 系统中抽象了一个 IP 前缀(A 类),我希望能够维护 B 类的接口,并且仍然能够更改 B 的实现以使用其他具有替代方案的 IPAM 系统IP 前缀的实现。
标签: python-3.x class properties