+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2019-08(17421)

2019-09(36497)

2019-10(17863)

2019-11(12982)

使用装饰器将方法动态添加到类

发布于2019-10-07 19:29     阅读(685)     评论(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

我希望这是有用的,并且您需要什么:)



所属网站分类: 技术文章 > python文章

作者:黑洞官方问答小能手

链接: http://www.pythonheidong.com/blog/article/133145/

来源:python黑洞网 www.pythonheidong.com

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

14 0

赞一赞 or 踩一踩

收藏该文
已收藏

评论内容:(最多支持255个字符)

相似文章

  为什么不返回`none'而不是tkinter.Entry对象?

  结合python flask和express.js

  带有多个应用程序的Django静态文件

  递归grep使用python

  将16位整数转换为32位浮点

  使用PIL和win32clipboard将图像写入python中的Windows剪贴板吗?

  更改每个视图的数据库并访问每个视图的多个数据库

  有任何适用于Python的pdf417条形码库吗?

  当它永远不会被实例化时,在python中创建一个类有意义吗?

  如何停止将回车符添加到Python的文件输出中?

优质资源排行榜

 python经典电子书大合集下载 下载次数 8117

 零基础java开发工程师视频教程全套,基础+进阶+项目实战(152G) 下载次数 7548

 零基础前端开发工程师视频教程全套,基础+进阶+项目实战(共120G) 下载次数 7442

 零基础大数据全套视频400G 下载次数 7005

 零基础php开发工程师视频教程全套,基础+进阶+项目实战(80G) 下载次数 6893

 零基础软件测试全套系统教程 下载次数 6503

 全套人工智能视频+pdf 下载次数 6440

 IOS全套视频教程 基础班+就业班 下载次数 4680

 编程小白的第一本python入门书(高清版)PDF下载 下载次数 3216

10  effective python编写高质量Python代码的59个有效方法 pdf下载 下载次数 3102

11  Python深度学习 pdf下载 下载次数 3070

12  python项目开发视频 下载次数 3001

13  python从入门到精通视频(全60集)python视频教程下载 下载次数 2999

14  使用python+pygame开发的小游戏《嗷大喵快跑》源码下载 下载次数 2998

15  黑马2017年java就业班全套视频教程 下载次数 2992

16  python实战项目 平铺图像板系统源码下载,适用于想要保存,标记和共享图像,视频和网页的用户 下载次数 2987

17  利用python实现程序内存监控脚本 下载次数 2987

18  树莓派Python编程指南 pdf下载 下载次数 2985

19  老男孩python自动化视频 下载次数 2980

20  老王python基础+进阶+项目视频教程 下载次数 2973

21  尚硅谷Go学科全套视频 下载次数 2972

22  Python基础教程 pdf下载 下载次数 2971

23  某硅谷Python项目+AI课程+核心基础视频教程 下载次数 2968

24  Web前端实战精品课程 下载次数 2967

25  [小甲鱼]零基础入门学习Python 下载次数 2962

26  tron python小游戏 下载次数 2962

27  老男孩python全栈开发15期 下载次数 2958

28  2017最新web前端开发完整视频教程附源码 下载次数 2948

29  笨办法学python pdf下载 下载次数 2937

30  最新全套完整JAVAWEB2018开发视频 下载次数 2926

31  Python算法教程_中文版 pdf下载 下载次数 2925

32  Python Cookbook第三版中文PDF下载高清完整扫描原版 下载次数 2920

33  Spring boot实战视频6套下载 下载次数 2909

34  python全套视频十五期(116G) 下载次数 2904

35  Python项目实战 下载次数 2885

36  python全自动抢火车票教程-python视频教程下载 下载次数 2883

37  30个小时搞定Python网络爬虫 含源码 下载次数 2882

38  尚硅谷大数据之Hadoop视频 下载次数 2876

39  简明python教程 (A Byte of Python)pdf下载 下载次数 2875

40  Python高性能编程 pdf下载 下载次数 2870

41  Python A~B~C~ python视频教程下载 下载次数 2865

42  利用Python进行数据分析 pdf下载 下载次数 2863

43  数据结构与算法视频(小甲鱼讲解-全) 下载次数 2863

44  web小程序表白天数倒计时源码下载 下载次数 2862

45  python基础视频教程 下载次数 2862

46  go语言全套视频 下载次数 2854

47  流畅的Python PDF下载高清完整扫描原版 下载次数 2850

48  清华学霸尹成Python爬虫视频-ok 下载次数 2846

49  黑马前端36期最全视频和代码 下载次数 2842

50  2018最新全套web前端视频教程+源码下载 下载次数 2841