一、整理筆記
1.封裝
class Dog:
def __init__(self,name,age,color,breed):
#定義類的屬性(數(shù)據(jù))
#self:指代當(dāng)前對(duì)象
#變量的作用域:作用的范圍
#name是局部變量,它的作用范圍僅限于定義它的函數(shù)或者方法內(nèi)部
#self.name是成員變量,它的作用范圍定義它的類的內(nèi)部
self.__name = name
self.__age = age
self.color = color
self.breed = breed
# __xxxx,變量名前有兩個(gè)下劃線,表示該變量是一個(gè)私有變量
#私有變量只允許子類的內(nèi)部訪問,不能從類的外部進(jìn)行訪問
'''
封裝:
把數(shù)據(jù)和處理數(shù)據(jù)的邏輯封裝起來(lái)
調(diào)用方便,并且不需要知道內(nèi)部的細(xì)節(jié)
'''
def show(self):
print (self.__name,self.__age,self.__color,self.__weight)
#getter/setter方法,用于讀寫對(duì)象的屬性
def get_name(self):
return self.__name
def get_age(self):
return self.__age
def get_color(self):
return self.__color
def get_weight(self):
return self.__weight
def set_name(self,name):
self.__name = name
def set_age(self,age):
if age>0 and age<=15:
self.__age = age
else:
#拋出異常
raise NameError('錯(cuò)誤的年齡')
def set_color(self,color):
self.__color = color
def set_weight(self,weight):
if weight>0 and weight<=50:
self.__weight = weight
else:
raise NameError('錯(cuò)誤的體重')
wangcai = Dog('旺財(cái)',4,'黃白','蘇格蘭牧羊犬')
wangcai.set_name('wangwang')
wangcai.set_age(10)
wangcai.set_color('白')
wangcai.set_weight(44)
wangcai.show()
2.繼承
# object類是所有其他類的父類
# 如果一個(gè)類的父類是object,可以不必聲明
class Animal(object):
#如果沒有顯式的提供構(gòu)造的方法,程序會(huì)提供一個(gè)默認(rèn)的構(gòu)造方法
def run(self):
print('動(dòng)物正在跑...')
'''
--繼承
Dog類繼承了Animal類,我們把Dog類稱為子類,Animal類稱為父類
繼承的好處:子類可以獲得父類的全部功能(包括屬性和方法)
繼承的同時(shí)子類也可以有自己的方法,并且子類可以對(duì)繼承自父類的方法進(jìn)行重寫
'''
class Dog(Animal):
def bark(self):
print('wwwwwwwang.....')
#重寫
def run(self):
print('dog is running......')
class Cat(Animal):
def eat(self):
print('eat fish......')
def run(self):
print('cat is climbing......')
a = Animal()
a.run()
dog = Dog()
dog.run()
dog.bark()
cat = Cat()
cat.run()
cat.eat()
3.多態(tài)
'''
--多態(tài)
同一個(gè)對(duì)象在不同的場(chǎng)合表現(xiàn)出不同的狀態(tài),稱之為多態(tài)
多態(tài)可以簡(jiǎn)化方法的調(diào)用
'''
#isinstance(),判斷某個(gè)對(duì)象是否是某一類的一個(gè)實(shí)例
print(isinstance(dog,Dog))
print(isinstance(dog,Animal))
#自定義的數(shù)據(jù)類型:類
def run_twice(animal):
animal.run()
animal.run()
run_twice(a)
run_twice(dog)
|