oo三大特性: 封裝 ,繼承 ,多型
方法重寫(overiding method): 子類不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要採用方法的重寫。
1. 繼承
1.1建構函式的繼承
import random as r
class fish:
def __init__(self):
self.x=r.randint(0,10)
self.y=r.randint(0,10)
def move(self):
self.x -= 1
print("我的位置是:",self.x,self.y)
class salmon(fish):
pass
class shark(fish):
def __init__(self):
self.hungry = true
def eat(self):
if self.hungry:
print("吃貨的夢想就是天天有的吃")
self.hungry=false
else:
print("吃不下了")
>>> shark=shark()
>>> shark.move()
traceback (most recent call last):
file "", line 1, in shark.move()
self.x -= 1
attributeerror: 'shark' object has no attribute 'x'
>>>
import random as r
class fish:
......
class shark(fish):
def __init__(self):
fish.__init__(self) #此處的self是子類shark的例項物件
self.hungry = true
#run起來
>>> shark=shark() #可理解為fish.__init__(shark)
>>> shark.move()
我的位置是: -1 9
......
使用:super(子類,self).init(引數1,引數2,…)
import random as r
class fish:
......
class shark(fish):
def __init__(self):
super().__init__()
self.hungry = true
......
2. 多重繼承class c(base1,base2,base3):
......
3. 組合
組合一般就是把橫向之間幾個沒有關係的類放在乙個類裡面使用
例項化放到新類裡。。
先定義兩個單獨沒有關係的類:
class turtle:
def __init__(self, x):
self.num = x
class fish:
def __init__(self, x):
self.num = x
再定義乙個組合類:
class pool:
def __init__(self,x,y):
self.turtle=turtle(x) #例項化乙個烏龜物件,並且存入變數x
self.fish=fish(y) #例項化乙個魚的物件,並且存入變數y
def printnum(self):
print('水池裡共有烏龜 %d 只,小魚 %d 條'%(self.turtle.num,self.fish.num))
呼叫:
pool=pool(1,10)
pool.printnum()
4. 類、物件類物件
>>> class c:
count = 0
>>> a=c()
>>> b=c()
#改變物件.屬性無法改變內部count的值
>>> a.count
0>>> b.count
0>>>a.count += 100
>>>a.count
>>>100
>>>b.count
>>>0
#改變類.count的屬性,我們發現這改變了內部count的值
>>> c.count += 100
>>> a.count
100>>> b.count
100>>>
5. 繫結
由於既可以通過例項物件也可以通過類物件來訪問方法,所以在python裡有兩種風格:
未繫結的類方法:沒有self
通過類來引用方法返回乙個未繫結方法物件。要呼叫它,你必須顯示地提供乙個例項作為第乙個引數。
>>> class test:
def func(message):
print("%s" % message)
>>> test.func("a")
a
繫結的例項方法:有self
通過例項訪問方法返回乙個繫結的方法物件。python自動地給方法繫結乙個例項,所以我們呼叫它時不用再傳乙個例項引數。
>>> class test:
def func(self,message):
self.message=message
print("%s" % self.message)
>>> t=test()
>>> t.func("a")
a
類和物件(二)
這篇部落格主要根據const修飾成員函式,內聯,友元函式以及靜態成員這四個方向說明。在以前的學習中我們學習了const修飾指標,修飾指標指向的變數,const修飾變數以及const修飾函式返回值等,這一次我們學習const修飾成員函式。首先const放在函式後面 void fun const 這樣表...
Python類和物件
1 建立類 語法 class classname 類的幫助資訊 類文件字串 class suite 類體 例如 class employee 所有員工的基類 empcount 0 def init self,name,salary self.name name self.salary salary ...
Python類和物件
python類和物件 類 具有相同的屬性和方法的物件的集合。物件 萬物皆物件。類和物件的關係 類是具有相同屬性方法物件的集合。類包含屬性和方法 語法 class 類名 屬性 方法定義乙個類 建立物件 屬性寫在類外的情況,就是通過物件,屬性,物件,方法的方式呼叫。屬性相對於類來說屬於全域性,每個方法都...