【问题标题】:Python -- Class of functions [duplicate]Python——函数类[重复]
【发布时间】: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


【解决方案1】:

总之,谁能解释一下:1)。如何创建从“函数”类型派生的类。

你不能。

如果不可能,为什么? 2)。该错误消息的真正含义。

该错误消息意味着 Python 不允许类将函数类型用作基类。用 C 实现的类只有在设置了特定标志时才能扩展;如果没有,这就是您尝试扩展它们时遇到的错误。

【讨论】:

    猜你喜欢
    • 2013-04-14
    • 1970-01-01
    • 2019-01-16
    • 2020-04-01
    • 2021-12-31
    • 2015-05-02
    • 2020-11-21
    • 2021-05-21
    • 1970-01-01
    相关资源
    最近更新 更多