Pythonクラス定義構文


95

違いはありますか

class A:
    ...

そして

class A():
    ...

私のクラスのいくつかは前者として定義されており、それらは問題なく機能することに気づきました。空の括弧は何か違いがありますか?

回答:


23

後者は、古いバージョンのPythonでの構文エラーです。ただし、Python 2.xではobject、いくつかの便利な機能は新しいスタイルのクラスでのみ使用できるため、可能な限り派生する必要があります(objectPython 3.xでは、新しいスタイルのクラスがデフォルトであるため、派生はオプションです)。


7
Python3ではもう当てはまりません。objectナンセンスに由来するものはすべて自動的に処理されます。
temporary_user_name

4
class A()これまでの構文エラー?Pythonの1.4ドキュメントは、それの罰金を言う、そしてそれらはまだpython.orgで利用可能な最も古いドキュメントをされています。
user2357112は、Monica

90

クラス定義で空の括弧を使用することは構文的に正しくないかもしれませんが、クラス定義の後の括弧は継承を示すために使用されます。例:

class A(baseClass):
    ...

Pythonでは、基本クラスを含まないクラス宣言の推奨構文は次のとおりです。

class A:
    ...

他のクラスをサブクラス化する場合を除いて、括弧は使用しないでください。

この問題に関するドキュメントは、 Pythonでクラスを宣言して使用する方法をよりよく理解できるようにする必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.