Python中文
首页
教程
问答
标签
搜索
登录
注册
使用类方法的类装饰器
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我编写了一个类修饰符,monkey修补了一个类,覆盖了<strong>init</strong>并添加了一个persist()方法。到目前为止一切正常。在</p> <p>现在我需要向装饰类添加一个类方法(静态方法)。为了使staticMethod()成为修饰类的静态方法,我必须在代码中做些什么更改?在</p> <p>这是我的代码:</p> <pre><code>#! /usr/bin/env python # -*- coding: utf-8 -*- class Persistent (object): def __init__ (self, table = None, rmap = None): self.table = table self.rmap = rmap def __call__ (self, cls): cls.table = self.table cls.rmap = self.rmap oinit = cls.__init__ def finit (self, *args, **kwargs): print "wrapped ctor" oinit (self, *args, **kwargs) def persist (self): print "insert into %s" % self.table pairs = [] for k, v in self.rmap.items (): pairs.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a> ( (v, getattr (self, k) ) ) print "(%s)" % ", ".join (zip (*pairs) [0] ) print "values (%s)" % ", ".join (zip (*pairs) [1] ) def staticMethod (): print "I am static" cls.staticMethod = staticMethod cls.__init__ = finit cls.persist = persist return cls @Persistent (table = "tblPerson", rmap = {"name": "colname", "age": "colage"} ) class Test (object): def __init__ (self, name, age): self.name = name self.age = age a = Test ('John Doe', '23') a.persist () Test.staticMethod () </code></pre> <p>输出是:</p> ^{pr2}$
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<pre><code> @staticmethod def staticMethod (): print "I am static" </code></pre> <p>或者</p> ^{pr2}$
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何为此数据帧创建散点图?
1 回答
如何为此编写Django模板
8 回答
如何为此表达式编写正则表达式?
8 回答
如何为步进电机选择合适的值?
8 回答
如何为每15分钟间隔的日期时间行(在新列中)添加标签?
10 回答
如何为每一列创建汇总表?
3 回答
如何为每一组groupbyPandas做滚动“得到假人”
8 回答
如何为每一行分别运行函数(python)?
5 回答
如何为每一行生成一个随机数?
1 回答
如何为每一轮将pytorch模型输出存储到numpy
5 回答
如何为每个.py-fi文件创建单独的zip文件
8 回答
如何为每个<li class=”“><a>找到最近的上述同级<li>?
8 回答
如何为每个CSV列生成特定的文件?
8 回答
如何为每个csv文件使用read_csv,即使它是空的?PythonPandas
10 回答
如何为每个CSV文件创建单独的Pandas数据帧并给它们起有意义的名称?
4 回答
如何为每个datetime和每个id创建一行?
9 回答
如何为每个Django型号选择赋予不同的颜色
1 回答
如何为每个Django模型实例安排一个周期性的芹菜任务?
3 回答
如何为每个Django视图设置一个装饰器?
8 回答
如何为每个for循环迭代分配变量
9 回答