web-dev-qa-db-ja.com

Classname(object)クラス、Pythonでは「オブジェクト」とはどのような単語ですか?

唯一のコンテンツを持つモジュールを作成すると:

class Classname(randomobject):
    pass

そして、インタープリターがrandomobjectが定義されていないと言っているモジュールの.pyファイルを実行しようとします。

しかし、私がするとき:

class Classname(object):
    pass

モジュールは問題なく動作します。 objectがキーワードでない場合、それは何ですか?

35
Bentley4

objectは(グローバル)変数です。デフォルトでは、タイプ階層のルートである組み込みクラスにバインドされます。

(これにより、任意の組み込み型を取得して__bases__プロパティは、オブジェクトと呼ばれるタイプに到達します。

キーワードや演算子ではない組み込みのものはすべて識別子です。

19
Marcin

objectは、組み込み型を参照する識別子です。

他の多くの言語とは異なり、Pythonにはプリミティブ型はありません。すべてのデータ型を含むすべてがオブジェクトです。

randomobjectからの継承が機能すると予想した理由がわかりません。

7
Taymon

次の3つのクラス宣言は、Python 3で同じです。

class Classname(object):
    pass

class Classname():
    pass

class Classname:
    pass

まあ、マイナーな differences がありますが、オブジェクトクラスがすべてのベースであるため、基本的に重要ではありません。

Python agnostic code(Python2 and Python3 agnostic))を作成する場合は、最初の宣言を使用できます。

6
prosti

objectは、Python 2.で新しいスタイルのクラスを作成するときに継承する基本クラスです。

5
Kien Truong