組合 :物件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
多型:同一類事物的多種形態
importabcclass 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)
鴨子型別 不同類定義的函式或者資料屬性名字相同,不同物件在呼叫這些屬性時,看上去都是一樣的屬性,實現功能也一樣,但內部**邏輯並不一樣。
classdisk:
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__()
(len(l))
(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...