6 python inheritance metaclass
这是我的问题.我希望以下类具有一堆属性属性.我可以要么它们全部写出来像foo
和bar
,或基于我已经看到了一些其他的例子,它看起来像我可以用一个类的装饰,元类,或者重写__new__
,自动将设置属性的方法.我只是不确定"正确"的做法是什么.
class Test(object):
def calculate_attr(self, attr):
# do calculaty stuff
return attr
@property
def foo(self):
return self.calculate_attr('foo')
@property
def bar(self):
return self.calculate_attr('bar')
Run Code Online (Sandbox Code Playgroud)
魔术是坏的。它使您的代码更难以理解和维护。实际上,您根本不需要元类或__new__
。
看来您的用例可以用非常简单的代码来实现(只有一点点魔术):
class Test(object):
def calculate_attr(self, attr):
return something
def __getattr__(self, name):
return self.calculate_attr(name)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1941 次 |
最近记录: |