43

基本クラスを作成しました:

class Thing():
    def __init__(self, name):
        self.name = name

クラスを拡張してinitメソッドに追加し、aとプロパティSubThingの両方を持つようにします。どうすればいいのですか?nametime

class SubThing(Thing):
    # something here to extend the init and add a "time" property

    def __repr__(self):
        return '<%s %s>' % (self.name, self.time)

どんな助けでも素晴らしいでしょう。

4

2 に答える 2

58

__init__サブクラスで定義し、super呼び出して親の__init__メソッドを適切に呼び出すことができます。

class SubThing(Thing):
    def __init__(self, *args, **kwargs):
        super(SubThing, self).__init__(*args, **kwargs)
        self.time = datetime.now()

objectただし、super古いスタイルのクラスでは機能しないため、基本クラスのサブクラスを必ず作成してください。

class Thing(object):
    ...
于 2012-10-03T02:44:00.730 に答える
1

__init__に別のメソッドを記述SubThingしてから、スーパークラスのコンストラクターを呼び出してそのフィールドを初期化する必要があります。

このQ&Aは、さらにいくつかの例を提供するはずです。

于 2012-10-03T02:43:24.103 に答える