唯一のコンテンツを持つモジュールを作成すると:
class Classname(randomobject):
pass
そして、インタープリターがrandomobject
が定義されていないと言っているモジュールの.pyファイルを実行しようとします。
しかし、私がするとき:
class Classname(object):
pass
モジュールは問題なく動作します。 object
がキーワードでない場合、それは何ですか?
object
は(グローバル)変数です。デフォルトでは、タイプ階層のルートである組み込みクラスにバインドされます。
(これにより、任意の組み込み型を取得して__bases__
プロパティは、オブジェクトと呼ばれるタイプに到達します。
キーワードや演算子ではない組み込みのものはすべて識別子です。
object
は、組み込み型を参照する識別子です。
他の多くの言語とは異なり、Pythonにはプリミティブ型はありません。すべてのデータ型を含むすべてがオブジェクトです。
randomobject
からの継承が機能すると予想した理由がわかりません。
次の3つのクラス宣言は、Python 3で同じです。
class Classname(object):
pass
class Classname():
pass
class Classname:
pass
まあ、マイナーな differences がありますが、オブジェクトクラスがすべてのベースであるため、基本的に重要ではありません。
Python agnostic code(Python2 and Python3 agnostic))を作成する場合は、最初の宣言を使用できます。
object
は、Python 2.で新しいスタイルのクラスを作成するときに継承する基本クラスです。