2017-06-12 7 views
0
>>> class MyKlass: 
...  pass 
... 
>>> 
>>> 
>>> a = MyKlass() 
>>> 
>>> type(a) 
<type 'instance'> 
>>> type(MyKlass) 
<type 'classobj'> 
>>> 
>>> 
>>> class MyKlass(object): 
...  pass 
... 
>>> 
>>> a = MyKlass() 
>>> 
>>> type(a) 
<class '__main__.MyKlass'> 
>>> type(MyKlass) 
<type 'type'> 
>>> 

上記のコードでは、1つのクラスは基本クラスから継承されず、もう1つはobject基本クラスから継承されます。クラスPythonの動作が異なります

明示的に継承しないと、どこか読んだことがあります。デフォルトの親クラスはobjectです。

デフォルトではobjectの場合、両方のクラスの型が異なるのはなぜですか?これらの異なる行動を上回るこれらの行動はいつ、どのように有用ですか?

+1

を拡張する必要があります – guidot

+1

「新しい」スタイルクラス( 'object'から継承するクラス)と「古い」スタイルクラス(これは' not'your ' 'オブジェクト'から継承する): "新しいクラス"は、現代のPythonでクラスを作成するための推奨される方法です。 " "modern"という言葉は、Pythonバージョン2.2と最大2.7を意味します。Python 3では、すべてのクラスが新しいスタイルのクラスです。 –

答えて

1

Python 3.x以降、すべてのクラスが暗黙的にobjectを拡張します。

しかし、これはPython 2.xでは適用できませんでした。 New-style and classic classesをご覧ください。古いPythonのバージョンでは、明示的に古いスタイルと新しいスタイルのクラスとの差が、唯一のPython 2.xの中に存在objectクラス

関連する問題