
昨天晚上看到一个 python 包 tornadows , 可以方便的用来创建 webservice
如下
from tornadows import soaphandler
from tornadows import xmltypes
from tornadows.soaphandler import webservice
class MatchService(soaphandler.SoapHandler):
@webservice(_params=[float,float],_returns=float)
def add(self, a, b):
result = a+b
return result
看了写这些类的形式差不多多少,但是又必须要写代码
那么可不可以动态的生成这个类来被使用呢? 比如我给出一个配置信息,包括了类名,方法,方法的参数数量及类型,甚至是返回值
如何根据这个配置信息把这个类动态创建出来呢?
需要了解什么知识点?
谢谢
1 pupboss 2015-11-21 18:50:44 +08:00 可以看看 python 的元编程,之前有过接触,不过我也没搞明白 |
2 ethego 2015-11-21 19:04:59 +08:00 在廖雪峰的 python 教程里搜索"metaclass" |
3 justfly 2015-11-21 19:48:03 +08:00 使用 type |
4 DEMONHUNTER 2015-11-21 20:33:12 +08:00 当然可以, python 的 mataclass 就是专门干这个的。 |
5 lxy42 2015-11-21 20:37:55 +08:00 type +1 |
6 baichi 2015-11-21 21:31:34 +08:00 |
7 echo1937 2015-11-21 21:42:17 +08:00 我大概看过 50 页元编程,发现这玩意十足黑科技。 |
8 ericls 2015-11-22 09:22:56 +08:00 |
9 agentwx OP metaclass 怎么玩呢?感觉没有这个东西,好像也是可以动态的嘛。比如 In [1]: def func_a(cls, a, b): ...: return a+b ...: In [2]: class A(object): ...: pass ...: In [3]: A.proper1 = "a" In [4]: A.funca = func_a In [5]: t = A() In [6]: t.funca(1,2) Out[6]: 3 正确的玩法,那么 metaclass 的正确的玩法是怎么样的呢? |
11 neoblackcap 2015-11-23 10:47:25 +08:00 metaclass ,我不了解。我只是了解 type 函数用法而已,请去看看 type 函数的文档,自然可以解决你的问题 |
12 agentwx OP @neoblackcap 好的 多谢 |