1.宣告方法
------------------子類-------------- 父類/基類------
class derivedclassname(baseclassname):
…
>>
>
class
parent
:def
hello
(self)
:print
("正在呼叫父類的方法"
)>>
>
class
child
(parent)
:pass
>>
> p = parent(
)>>
> p.hello(
)正在呼叫父類的方法
>>
> c = child(
)>>
> c.hello(
)正在呼叫父類的方法
2.覆蓋
如果子類中定義與父類同名的方法或屬性,則會自動覆蓋父類對應的方法或屬性
>>
>
class
child
(parent)
:def
hello
(self)
:print
("正在呼叫子類的方法"
)>>
> c = child(
)>>
> c.hello(
)正在呼叫子類的方法
>>
> p.hello(
)正在呼叫父類的方法
如果子類中的__init__函式覆蓋了父類的__init__函式,就會導致父類的__init__函式無法執行,
例如:
import random as r
class
fish
:def
__init__
(self)
: self.x = r.randint(0,
10)self.y = r.randint(0,
10)defmove
(self)
: self.x -=
1print
('我的位置是'
,self.x,self.y)
class
goldfish
(fish)
:pass
class
carp
(fish)
:pass
class
salmon
(fish)
:pass
class
shark
(fish)
:def
__init__
(self)
:
self.hungry =
true
defeat
(self)
:if self.hungry:
print
('吃貨的夢想就是天天有的吃!'
) self.hungry =
false
else
:print
('太撐了,吃不下了!'
)
= restart: c:32/
1.py
>>
> fish = fish(
)>>
> fish.move(
)我的位置是 9
5>>
> fish.move(
)我的位置是 8
5>>
> goldfish = goldfish(
)>>
> goldfish.move(
)我的位置是 3
4>>
> goldfish.move(
)我的位置是 2
4>>
> shark = shark(
)>>
> shark.eat(
)吃貨的夢想就是天天有的吃!
>>
> shark.eat(
)太撐了,吃不下了!
>>
> shark.move(
)traceback (most recent call last)
: file ""
, line 1,in
shark.move(
), line 9
,in move
self.x -=
1attributeerror:
'shark'
object has no attribute 'x'
'''最後一句丟擲異常'''
此時,有兩種方法,可以將父類的__init__傳遞下來
1)呼叫未繫結的父類方法
class
shark
(fish)
:def
__init__
(self)
: fish.__init__(self)
'''此句便是重點'''
self.hungry =
true
>>
> shark = shark(
)>>
> shark.move(
)我的位置是 8
7
使用super函式
class
shark
(fish)
:def
__init__
(self)
:super()
.__init__(
)'''super方法可以將fish父類對應的方法繼承下來'''
self.hungry =
true
>>
> shark = shark(
)>>
> shark.move(
)我的位置是 2
10
3.多重繼承
方法:class derivedclassname(base1,base2,base3):
…
>>
>
class
base1
:def
foo1
(self)
:print
('我是foo1,我為base1代言'
)>>
>
class
base2
:def
foo2
(self)
:print
('我是foo2,我為base2代言'
)>>
>
class
c(base1,base2)
:pass
>>
> c = c(
)>>
> c.foo1(
)我是foo1,我為base1代言
>>
> c.foo2(
)我是foo2,我為base2代言
並不建議使用 python自學筆記
一 字串 單引號定義 s spam len s 求長度 第一位索引從0開始 s 0 s 最後一位也可以從 1開始索引 s 1 m s 2 a 幾個常用到的索引計算方法 s 1 pam 從第乙個一直到最後乙個 s 0 3 spa 從m開始到n 1 不包括n 本例為從0到2 s 3 pam 從第乙個開始...
Java自學抽象類 自學筆記
抽象類是指在類的宣告前加上abstract關鍵字修飾的類。抽象類可以包含常規類能夠包含的任何東西,這包括構造方法,因為子類可能需要呼叫這種構造方法。抽象類可以包含抽象方法,即方法宣告前用abstract修飾的。抽象方法只有方法的宣告沒有方法體 方法實現 非抽象的方法可以有方法體。抽象方法將在子類中被...
python自學筆記9之模組和類
自己寫乙個模組 我們以內建的sys模組為例,編寫乙個hello的模組 author zerof import sys print name is name deftest args sys.argv if len args 1 print hello,world elif len args 2 pr...