0

組み込みクラスとユーザー定義クラスのメンバー関数のタイプが異なることに気づきました。これは、状況によっては2つの動作が異なる可能性があることを意味しますか?

class A:
  def a():
    pass

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

1 に答える 1

2

それがあなたが意味するものであるならば、それらは両方ともそれらの機能を正常に実行します。どちらも呼び出し可能です。それ以外の場合、それらの間にはほとんど違いがありません。

1つの違いは、オブジェクトには任意の属性を設定できますがfunction、C関数(など)には設定できないことですlist.append)

もう1つは、Python関数に、コンパイルされたバイトコードやローカル変数などに関する情報を含むコードオブジェクトが関連付けられていることです。C関数は、当然、その情報を欠いています。

于 2013-01-03T20:57:51.297 に答える