類的繼承、類的屬性總結、類的方法總結
繼承是相對兩個類而言的父子關系,子類繼承了父類的所有公有屬性和方法,繼承可以重用已經存在的方法和屬性,減少代碼的重復編寫,Python 在類名後使用一對括號來表示繼承關系,括號中的類即為父類,如 class Myclass(ParentClass) 表示 Myclass(子類) 繼承了 ParentClass(父類) 的方法和屬性
#!/usr/bin/python
class People(object):
color = ‘yellow‘
def think(self):
print "I am a thinker"
class Chinese(People): # 這裏表示 Chinese 繼承了 People
cn = Chinese() # 因為 Chinese 繼承了 People ,所以可以直接調用 People 裏面的屬性和方法
print cn.color
cn.think()
如果父類定義了 init 方法,子類必須顯式調用父類的 init 方法:
!/usr/bin/python
class People(object):
color = ‘yellow‘
def __init__(self, c):
print "Init...."
def think(self):
print "I am a thinker"
class Chinese(People):
People.init(self,‘red‘) # 顯式調用父類的init方法
cn = Chinese()
多重繼承即一個子類可以繼承多個父類
#!/usr/bin/python
class A(object):
def aaa(self):
print "aaa"
class B(object):
def bbb(self):
print "bbb"
class C(A, B): # 子類 C 同時繼承了兩個父類 A 和 B
pass
cn = C()
cn.aaa() # 可以直接調用父類的方法
當父類中出現多個自定義的init方法時,多重繼承只執行第一個父類的init方法,其他不執行:
[root@localhost ~]# cat 1.py
#!/usr/bin/python
class A(object):
def aaa(self):
print "aaa"
def __init__(self):
print "A"
class B(object):
def bbb(self):
print "bbb"
def __init__(self):
print "B"
class C(A, B): # 這裏繼承了 A 的 init 方法(誰在前面就先繼承誰的)
pass
cn = C()
[root@localhost ~]# python 1.py # 執行結果可知只執行了第一個父類的init方法
A
如下,通過對類實例化之後,打印出來的是一個對象:
[root@localhost ~]# cat 1.py
#!/usr/bin/env python
class People(object):
pass
ren = People()
print ren
[root@localhost ~]# python 1.py
<main.People object at 0x7fbb9dc>
我們可以通過 str 來返回我們想要的字符串:
[root@localhost ~]# cat 1.py
#!/usr/bin/env python
class People(object):
pass
def __str__(self):
return "This is a people"
ren = People()
print ren
結果:
[root@localhost ~]# python 1.py
This is a people
init 用於類的初始化,也就是說,當實例化一個對象時,自動執行 init 下面的屬性和方法:
#!/usr/bin/env python
class People(object):
color = ‘yellow‘
def __init__(self):
self.color = ‘black‘
ren = People() # 這裏實例化一個對象,那麽就會執行init下的內容,則 color 的值變為 black
print ren.color # 當對象去調用的時候,color 值為 black
print People.color # 當類去調用的時候,color 值不變,還是 yellow
[root@localhost ~]# python 1.py
black
yellow
del 用於釋放對象所占用的資源,註意 del 是在腳本要退出之前執行的
復制代碼
#!/usr/bin/env python
class People(object):
color = ‘yellow‘
def __init__(self):
self.fd = open(‘/etc/passwd‘) # 我打開了一個文件
def __del__(self):
self.fd.close() # 可以在__del__中關掉這個文件
ren = People()
類的繼承、類的屬性總結、類的方法總結