1. ホーム
  2. python

[解決済み] Pythonのクラスはすべてobjectを継承すべきなのか?重複

2022-06-11 20:45:42

質問

の両方が有効であることがわかりました。

class Foo():
    def a(self):
        print "hello"

class Foo(object):
    def a(self):
        print "hello"

Pythonのクラスはすべてobjectを継承すべきですか?objectを継承しないことによる潜在的な問題はありますか?

どのように解決するのですか?

Python 2では object を継承しない場合、古いスタイルのクラスが作成され、他の効果に混じって type が異なる結果を与えるようになります。

>>> class Foo: pass
... 
>>> type(Foo())
<type 'instance'>

vs.

>>> class Bar(object): pass
... 
>>> type(Bar())
<class '__main__.Bar'>

また、多重継承のルールは 異なる であり、ここで要約しようとは思いません。私が見た MI に関するすべての優れたドキュメントは、新しいスタイルのクラスについて説明しています。

最後に、古いスタイルのクラスは Python 3 で姿を消してしまいました。 object からの継承は暗黙のうちに行われるようになりました。そのため、古いソフトウェアとの後方互換性が必要でない限り、常に新しいスタイルのクラスを選択する必要があります。