Python3 從零單排19 組合 多型

2022-08-11 19:18:12 字數 3370 閱讀 5825

組合 :物件1的屬性是物件2,物件1就擁有了物件2的資料和函式屬性,這就是組合。

#

a型別和b型別沒有共性,不可以繼承,但是a有b的特性,比如a是人,b是家,a和b沒有繼承關係,但是人有家,a有b的關係,那麼就可以把b的屬性都給a用

class

people:

def__init__

(self,name,age):

self.name =name

self.age =age

defsay_hi(self):

print("

hi my name is %s

"%self.name)

class

home:

def__init__

(self,adress,area,height):

self.adress =adress

self.area =area

self.heaight =height

defhome_info(self):

print("

"%(self.adress,self.area))

xg = people("

曉鋼",18)

hourse = home("

地球",1000,10)

xg.hourse =hourse

xg.hourse.home_info()

#

抽象類:抽取一些類的共性作為乙個類,比如水果類,人類。抽象類能被繼承,但是不能被例項化。

當函式屬性用裝飾器abc.abstractmethod裝飾的時候,子類必須按照抽象類的定義實現這個固定的函式屬性,否則報錯。

import abc #

需要用到abc這個模組來定義抽象類

class animal(metaclass=abc.abcmeta):

@abc.abstractmethod

#abc.abstractmethod 裝飾後,該類的所有子類必須含有該方法才不會報錯

defrun(self):

print("

people is running!")

defsleep(self):

pass

class

people(animal):

def run(self): #

必須定義run方法才可以,否則報錯

pass

多型:同一類事物的多種形態

import

abcclass animal(metaclass=abc.abcmeta): #

同一類事物:動物

@abc.abstractmethod

def talk(self): #

animal的所有子類都必須實現talk方法,否則報錯

pass

class people(animal): #

動物的形態之一:人

deftalk(self):

print('

say hello')

class dog(animal): #

動物的形態之二:狗

deftalk(self):

print('

say wangwang')

class pig(animal): #

動物的形態之三:豬

deftalk(self):

print('

say aoao')

class cat(animal): #

動物的形態之三:貓

deftalk(self):

print('

say miamiao')

#多型性:指的是可以在不考慮物件的型別的情況下而直接使用物件方法 從而擴充套件性高

peo1=people()

dog1=dog()

pig1=pig()

cat1=cat()

#peo1.talk()

#dog1.talk()

#pig1.talk()

deffunc(animal):

animal.talk()

func(peo1)

func(pig1)

func(dog1)

func(cat1)

鴨子型別  不同類定義的函式或者資料屬性名字相同,不同物件在呼叫這些屬性時,看上去都是一樣的屬性,實現功能也一樣,但內部**邏輯並不一樣。

class

disk:

defread(self):

print('

disk read')

defwrite(self):

print('

disk write')

class

text:

defread(self):

print('

text read')

defwrite(self):

print('

text write')

#f=open(...)

#f.read()

#f.write()

disk=disk()

text=text()

disk.read()

disk.write()

text.read()

text.write()

序列型別是典型的鴨子型別:列表list,元祖tuple,字串str

l=list([1,2,3])

t=tuple(('

a','b'

))s=str('

hello')

### print(l.__len__())

## print(t.__len__())

## print(s.__len__())##

# def len(obj):

## return obj.__len__()

print

(len(l))

print

(len(t))

print(len(s))

Python3 從零單排5 內建函式

python一些常用的內建函式及作用請見以下 lis 1,4,3,8,2,9,10,0 print all lis 判斷可迭代物件裡頭是否存在不為真的元素,如果存在不為真的元素則返回false,否則true print any lis 判斷可迭代物件裡頭是否存在為真的元素,如果存在為真的元素則返回t...

Python3 從零單排18 封裝

隱藏屬性 申明類時,資料屬性或者函式屬性,在屬性名稱前加上兩個下劃線,就實現了屬性隱藏,但在python裡不存在絕對的隱藏,它只是在申明的時候定義了它的呼叫方式。class a country china def def self print self.country a a print a.cou...

python3 從零單排3 函式 購買商品小程式

題目如下 商品檔案products.txt裡存的內容如下 使用者檔案user.txt裡存的內容如下 xg 管理員可以操作 1.給使用者充值,輸入使用者名稱,修改money,100000 2.新增商品 3.logout 普通使用者可以操作 1.看商品資訊 2.買東西,a.東西加products,mon...