3

このトピックについて同様の質問がいくつか見られますが、確認したいので、質問しています...

違いは何ですか:

class MyClass:
    pass

class MyClass():
    pass

また、これら2つの違いはありますか:

class MyClass():
    pass

class MyClass(object):
    pass
4

3 に答える 3

7

class MyClassと の間に違いはありませんclass MyClass()。2 番目の質問は、Python のバージョンによって異なります。python3.x では、違いはありません。python2.x では、後者 (から継承する場所) は、古いスタイルのクラスではなく、新しいスタイルのクラスobjectを作成します。python3.x では、すべてのクラスが新しいスタイルです。最近は新しいスタイルのクラスが好まれています。そのため、クラスがオブジェクトから継承されていることを常に確認しています。

于 2013-02-12T14:52:35.353 に答える
5

最初の 2 つのスペルに違いはありません。

Python 2.7 では、後者の 2 つに大きな違いがあります。から継承objectすると新しいスタイルのクラスになり、継承のセマンティクスが変更され、記述子 ( 、 など) のサポートが追加され@propertyます@classmethod。これは Python 3 のデフォルトです。

Python 2.2 で新しいスタイルのクラスが導入され、型 ( や など) とクラスが統一されましintlist。いくつかの変更は後方互換性のない方法で行われるため、変更を有効にするには、明示的に継承する「オプトイン」する必要がありobjectます。

Python 3 では、からの継承objectは不要になりました。クラスは常に新しいスタイルです。

于 2013-02-12T14:52:48.270 に答える
3

class MyClass(object)型のクラス宣言は、Python 2.xの New Style クラスです。

Guido は、Python の歴史で新しいクラスをもたらした考え方について書いています。

于 2013-02-12T14:52:36.597 に答える