1. 程式人生 > >類的繼承、類的屬性總結、類的方法總結

類的繼承、類的屬性總結、類的方法總結

close 父類 ack 一個 sel lose 其他 /usr 方法總結

類的繼承

繼承是相對兩個類而言的父子關系,子類繼承了父類的所有公有屬性和方法,繼承可以重用已經存在的方法和屬性,減少代碼的重復編寫,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

pass

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):

def init(self):
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() # 可以直接調用父類的方法

cn.bbb()

當父類中出現多個自定義的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()

類的繼承、類的屬性總結、類的方法總結