0

我注意到内置类和用户定义类的成员函数具有不同的类型。这是否意味着两者在某些情况下可能表现不同?

class A:
  def a():
    pass

>>> type(A.a), type(list.append)
(<class 'function'>, <class 'method_descriptor'>)
4

1 回答 1

2

如果这就是您的意思,它们都正常执行其功能。它们都是可调用的。否则它们之间几乎没有区别。

一个区别是您可以在function对象上设置任意属性,但不能在 C 函数(例如list.append).

另一个是 Python 函数有一个与之关联的代码对象,其中包含已编译的字节码和有关局部变量等的信息。C 函数自然缺少这些信息。

于 2013-01-03T20:57:51.297 回答