0
class a:
    def set(self, value):
        print value+1

    def set2(self, value):
        self.set(value)

class b(a):        
    def set(self, value):
        print value

if __name__ == '__main__':
    i = b()
    i.set2(10)

実行すると、という結果が得10られb.set()ましa.set()self

PS では、クラス 'a' にメソッド set() がなくても、このコードは機能しますか? しかし、それは良いコーディング規則ですか?

4

3 に答える 3

3

set()派生クラスでオーバーライドしているので、それが によって呼び出されていself.set()ます。

のメソッドを呼び出すにはa、次の構文を使用できます。

    a.set(self, value)
于 2013-03-06T09:23:16.453 に答える
2

を呼び出すと、どこで呼び出してもself.set(value)常に同じ定義が得られます。set()

class Animal(object):
    def interact(self):
        print('I am a {}, I say "{}"'.format(self.name(), self.speak()))

class Dog(Animal):
    def name(self):
        return 'dog'
    def speak(self):
        return 'woof'

a.set()必要に応じて、明示的に呼び出すことができます。

class A(object):
    def set(self, value):
        print(value + 1)
    def set2(self, value):
        A.set(self, value)

ただし、これは少しばかげています。この例は非常に抽象的であるため、適切なコーディング スタイルを理解するために使用することはできません。

于 2013-03-06T09:23:33.000 に答える
0

aあなたの場合、 をset()呼び出したい場合は、次の構文を使用する必要があります。 a().set(10)

于 2013-03-06T09:37:15.400 に答える