書き換え方法
親から受け継いだものが必ずしも当てはまるとは限らないとか、例えばDog類にはbarkという方法があり、普通の犬の鳴き声は「ワンワン」ですが、喘天犬はそうではないことに気づいたので、修正してみましょう.
変更方法は簡単です.サブクラスに同じ名前の方法を書けばいいです.
以上の例の実行結果:----飛ぶ------狂って叫ぶ------食べる----
書き換えられた親を呼び出す方法
呼び出し親メソッドの指定
以上の例の実行結果:----飛ぶ------狂う------ワンワン------ワンワン------食べる----
super()関数:
-
以上の例の実行結果:beckhamred
以上の例の実行結果:氏名【ye】性別【man】年齢【18】学号【007】学生名ye,年齢18,学号007
変更方法は簡単です.サブクラスに同じ名前の方法を書けばいいです.
#! /usr/bin/env python
# -*- coding:utf-8 -*-
class Animal:
def eat(self):
print("---- ----")
def drink(self):
print("---- ----")
def sleep(self):
print("---- ----")
def run(self):
print("---- ----")
class Dog(Animal):
def bark(self):
print("---- ----")
class Xiaotq(Dog):
def fly(self):
print("---- ----")
def bark(self):
print("---- ----") #
p=Xiaotq()
p.fly()
p.bark()
p.eat()
以上の例の実行結果:----飛ぶ------狂って叫ぶ------食べる----
書き換えられた親を呼び出す方法
呼び出し親メソッドの指定
class Xiaotq(Dog):
def fly(self):
print("---- ----")
def bark(self):
print("---- ----")
# 1
super().bark() # super() ,
# 2
Dog.bark(self) #
以上の例の実行結果:----飛ぶ------狂う------ワンワン------ワンワン------食べる----
super()関数:
, , 。 ? super() ! , super __init__
-
__init__ __init__ , super 。super 。 。
#! /usr/bin/env python
# -*- coding:utf-8 -*-
class Monkey():
arms = 2
legs = 2
def __init__(self, color): #
self.color = color
class Human(Monkey):
def __init__(self, name, color): #
self.name = name
super().__init__(color) #
beckham = Human('beckham', 'red')
print(beckham.name)
print(beckham.color)
以上の例の実行結果:beckhamred
super.__init__
の使用#! /usr/bin/env python
# -*- coding:utf-8 -*-
class Human():
def __init__(self, name,age,num): #
self.name=name
self.num=num
self.age=age
def print_type(self):
print(" %s, %s, %s" %(self.name,self.age,self.num))
class xuesheng(Human):
def __init__(self,name,age,num,gender): #
super().__init__(name,age,num) #
self.gender = gender
def xueshengxingxi(self):
print(" 【%s】 【%s】 【%s】 【%s】" % (self.name, self.gender, self.age, self.num))
p=xuesheng('ye','18','007','man')
p.xueshengxingxi() #
p.print_type() # , ; gender
# : 。
# :super() , 。
以上の例の実行結果:氏名【ye】性別【man】年齢【18】学号【007】学生名ye,年齢18,学号007