【发布时间】:2017-11-15 13:15:00
【问题描述】:
def Func():
pass
在 IPython 会话中,当我输入 type(Func) 时,输出为“function”。由于 Python 是一种面向对象的语言,我假设有一个类,其中“Func”是一个实例。所以我尝试以这种方式创建自己的课程:
class MyFunc(function):
pass
唉,解释器刚刚抛出了一个“NameError”,抱怨“function”没有定义。 所以,我试着变得有点聪明,然后这样做了:
class myfunc(func.__class__):
pass
唉,惨败了……
TypeError: Error when calling the metaclass bases
type 'function' is not an acceptable base type
总之,谁能解释一下: 1)。如何创建从“函数”类型派生的类。如果不可能,为什么? 2)。该错误消息的真正含义。
【问题讨论】:
-
感谢您提出这个问题——我以前从未想过这样做
-
Python 是个兔子洞,尼特?
-
但我认为这个答案已经回答了:stackoverflow.com/a/10114382/2958070。特别是this link
-
仅供参考,函数类型实际上在
types.FunctionType中可用。但是你仍然不能继承它。 -
如果你想在你的类中签名一个函数,添加一个
__call__方法
标签: python python-2.7