【发布时间】:2016-04-28 08:35:01
【问题描述】:
我有一个大类,它有很多功能和属性。 实例是根据远程数据库中的数据创建的。
创建每个实例的过程非常漫长而繁重。
出于性能考虑,我从这个重类中创建了一堆类。 所以访问属性很容易并且效果很好。 问题是如何使用该类中的方法。
前:
class clsA():
def __init__(self,obj):
self.attrA=obj.attrA
def someFunc(self):
print self
class bunchClsA(bunch):
def __getattr__(self, attr):
# this is the problem:
try:
#try and return a func
func = clsA.attr
return func
except:
# return simple attribute
return self.attr
显然,这很有效,有没有办法我可以静态访问实例函数并覆盖“self”var?
【问题讨论】:
-
tnx,类。已编辑。
-
无论您在做什么,这都是一个巨大的 HACK,远非正确/好的解决方案。但是,如果您仍然坚持将另一个类的方法/函数绑定到
bunchClsA实例,那么您可以在buncChlsA.__getattr__中这样做:return types.MethodType(vars(clsA)[attr], self)这不是一段可以引以为豪的代码。如果您在您的资源中使用它,那么我建议您放弃对这个“解决方案”的所有权。我不明白为什么这比直接将方法写到bunchClsA更好。 -
您到底想做什么,有什么问题?怎么不行?
-
我知道这是一个 hack,我尽量不复制所有方法(有很多。),谢谢你的想法。
-
你为什么不使用多重继承?
标签: python oop static instance instance-variables