发布于2019-10-07 19:29 阅读(1130) 评论(0) 点赞(14) 收藏(0)
我将class
动态添加方法...函数名称也将动态传递。
我能怎么做?我以这种方式尝试
def decor(*var):
def onDecorator(aClass):
class onInstance:
def __init__(self,*args,**kargs):
setter=var
aClass.setter = self.flam
self.wrapped = aClass(*args,**kargs)
def __getattr__(self,attr):
return getattr(self.wrapped,attr)
def __setattr__(self,attr,value):
if attr == 'wrapped':
self.__dict__[attr]=value
else:
setattr(self.wrapped,attr,value)
def flam(self,*args):
self.__setattr__('dimension',len(args[0]))
return onInstance
return onDecorator
但是如果我这样做:
print(aClass.__dict__)
我有
'setter': <bound method onInstance.flam of <__main__.onInstance object at 0x522270>>
代替var
:...
我有这个课:
class D:
def __init__(self, data):
self.data = data
self.dimension = len(self.data)
我会打电话给:
D.name()
回来了,self.dimension
但我name
事先不知道
这是我的装饰工
def decorator(name):
def wrapper(K):
setattr(K, name, eval(name))
return K
return wrapper
这是一个示例方法
def myfunc(self):
print "Istance class: ", self
这是一个去皮的类
@decorator("myfunc")
class Klass:
pass
我希望这是有用的,并且您需要什么:)
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/133145/aac1466af8f8203b8067/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!