古いpythonバージョンでは、Pythonでクラスを作成すると、それはobjectから継承できます。これは、特別な組み込みpython要素。
新しいバージョン(> 3.0および2.6)についてはどうですか?私はクラスオブジェクトについてグーグルで検索しましたが、(明らかな理由により)多くの結果が得られました。ヒントはありますか?
感謝!
python 3.で新しいスタイルにするためにobject
から継承する必要はありません。3。すべてのクラスは新しいスタイルです。
これは古い質問であることは承知していますが、python 3 3であっても、これら2つはまったく同じではないことに注意してください。
object
から明示的に継承する場合、実際に行っているのはbuiltins.object
から継承することですその時点で何を指しているかに関係なく
したがって、なんらかの理由でオブジェクトをオーバーライドする(非常に奇抜な)モジュールを使用できます。この最初のモジュールを「newobj.py」と呼びます。
import builtins
old_object = builtins.object # otherwise cyclic dependencies
class new_object(old_object):
def __init__(self, *args, **kwargs):
super(new_object, self).__init__(*args, **kwargs)
self.greeting = "Hello World!"
builtins.object = new_object #overrides the default object
次に、他のファイル( "klasses.py")で:
class Greeter(object):
pass
class NonGreeter:
pass
次に、3番目のファイル(実際に実行できます):
import newobj, klasses # This order matters!
greeter = klasses.Greeter()
print(greeter.greeting) # prints the greeting in the new __init__
non_greeter = klasses.NonGreeter()
print(non_greeter.greeting) # throws an attribute error
つまり、オブジェクトから明示的に継承している場合、暗黙的な継承を許可している場合とは異なる動作をすることがわかります。