回答:
Python2では、これは(「クラシック」クラスではなく)新しいスタイルのクラスでTableあると宣言します。Python3では、すべてのクラスが新しいスタイルのクラスであるため、これは不要になりました。
新しいスタイルのクラスには、クラシッククラスにはないいくつかの特別な属性があります。
class Classic: pass
class NewStyle(object): pass
print(dir(Classic))
# ['__doc__', '__module__']
print(dir(NewStyle))
# ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
また、プロパティとスーパーはクラシッククラスでは機能しません。
Python2では、すべてのクラスを新しいスタイルのクラスにすることをお勧めします。(標準ライブラリのクラスの多くは、下位互換性のために、依然としてクラシッククラスですが)。
一般的に、
class Foo(Base1, Base2):
Fooは、基本クラスBase1およびから継承するクラスとして宣言されていBase2ます。
objectPythonのすべてのクラスの母です。新しいスタイルのクラスなので、から継承objectするTableと新しいスタイルのクラスになります。
objectクラスベースのリストからの省略により)示されています。
objectます。2つのステートメントをまとめるとobject、すべてのクラスはPython3の新しいスタイルのクラスであるため、Python3のクラスベースのリストに含める必要はありません。
Tableクラスはというクラスを拡張していobjectます。それは議論ではありません。object明示的に拡張する理由は、クラスを新しいスタイルのクラスに変換するためです。extendsを明示的に指定しない場合object、Python 3まではデフォルトで古いスタイルのクラスになります。(Python 3以降、明示的に拡張するかどうかにかかわらobjectず、すべてのクラスは新しいスタイルです。)
「新しいスタイル」と「古いスタイル」のクラスの違いはPython 2.xに固有であることに注意してください。3.xでは、すべてのクラスが「新しいスタイル」です。
クラスTableとクラスTable(object)はPythonでも同じです。
これはパラメーターではなく、オブジェクト(他の多くの言語と同様に基本クラス)から拡張されたものです。
それが言うすべてはそれが「オブジェクト」で定義されたものを継承するということです。これがデフォルトの動作です。
objectは、Python 3のみのデフォルトの動作です。Python 2では、クラス拡張オブジェクトには、オブジェクトを拡張しないクラスにはない属性があります。
オブジェクトは、Pythonで定義されているクラスオブジェクトの最も基本的なタイプです。オブジェクトの属性は以下のように見ることができます
** >>> dir(オブジェクト)
[' class '、 ' delattr '、 ' doc '、 ' format '、 ' getattribute '、 ' hash '、 ' init '、 ' new '、 ' reduce '、 ' reduce_ex '、 ' repr '、 ' setattr '、 ' sizeof '、' str '、' サブクラスフック '] **
したがって、Table(object)は単なる継承です。
1)クラス名(オブジェクト):2)クラス名:どちらも同じですが、最初の方が書き込みの点で非常に優れています。
どのように同じですか?したがって、Pythonのすべてのものがオブジェクトの下にあるということは、Pythonのすべてのものがオブジェクトのプロパティを持っていることを意味します。最初は明示的に、2番目は明示しませんでした。