相关疑难解决方法(0)

函数,可调用对象以及如何在Python中创建它们

我想知道函数和可调用对象之间更复杂的差异.例如,如果你这样做:

def foo1():
   return 2 + 4

class foo2:
   def __call__():
      return 2 + 4

import sys 
sys.getsizeof(foo1)  # returns 136
sys.getsizeof(foo2)  # returns 1016
Run Code Online (Sandbox Code Playgroud)

功能和可调用对象之间显然存在很大差异.但是,我找不到很多关于幕后发生的事情的文档.我知道函数是一流的对象,但我也知道类比常规函数要多得多.class foo2是用元类创建的type().

那么我的问题是:

  1. 在创建函数时def foo1():,这与使用元类定义类的过程有何不同?是否有一个版本type()但功能,一个元功能?
  2. 假设有人想编写他们自己的元函数(这背后的真正原因),是否更好地使用装饰器,或者可能是使得可调用类的元类?它们会提供什么样的优势(使得可调用类的元类看起来很笨重)?
  3. 具有可调用对象的唯一目的是具有可以在其中存储信息的功能吗?

python

17
推荐指数
1
解决办法
3037
查看次数

标签 统计

python ×1