python 類和物件(二)

2021-09-16 14:13:32 字數 3014 閱讀 5693

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 類名 屬性 方法定義乙個類 建立物件 屬性寫在類外的情況,就是通過物件,屬性,物件,方法的方式呼叫。屬性相對於類來說屬於全域性,每個方法都...