【发布时间】:2017-08-11 19:37:57
【问题描述】:
我有一个类(Bar)嵌入到另一个类(Foo)中。
class Foo():
class Bar():
def __init__(self):
self.a = 1
self.b = 2
...
self.z = 26
def __init__(self):
self.bar = Bar()
要访问 Bar 类的属性,用户需要执行以下操作:
>>> f = Foo()
>>> f.bar.a
1
如何设置短点符号以便用户可以同时使用:
>>> f.bar.a
1
和
>>> f.a
1
在我的示例中,我试图证明 Bar 类有很多变量。所以我不想手动为每个人写一个getter/setter。所以我想在这样的 for 循环中使用 property():
def __init__(self):
self.bar = Bar()
# Allow shorter dot notation
for parm in self.bar.__dict__:
setattr(self, i, getattr(bar, i))
self.i = property(...)
但我不确定如何在不手动编写几个 setter 函数的情况下在这种情况下使用属性。
关于如何允许访问更短和更长的符号有什么建议吗?
【问题讨论】:
-
您的示例中的类在 Python 2 上没有显式继承自
object或任何其他新式类。这将产生 旧式类,一个旧的,更糟糕的系统,有很多奇怪的不兼容性,只是因为一些旧代码依赖于这种行为而保留下来。除非你真的需要保留旧的行为,否则不从其他任何东西继承的类应该显式地从 Python 2 上的object继承。
标签: python python-2.7 data-structures