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