1. 什麼是組合
乙個物件的屬性是來自於另外乙個類的物件,稱之為組合
2. 為何用組合
組合也是用來解決類與類**冗餘的問題
1. 什麼是封裝
裝指的是把屬性裝進乙個容器
封指的是隱藏的意思,但是這種隱藏式對外不對內的
2. 為何要封裝
封裝不是單純意義的隱藏
封裝資料屬性的目的:將資料屬性封裝起來,類外部的使用就無法直接操作該資料屬性了
需要類內部開乙個介面給使用者,類的設計者可以在介面之上附加任意邏輯,從而嚴格
控制使用者對屬性的操作
封裝函式屬性的目的:隔離複雜度
3. 如何封裝
只需要在屬性前加上__開頭,該屬性就會被隱藏起來,該隱藏具備的特點:
1. 只是一種語法意義上的變形,即__開頭的屬性會在檢測語法時發生變形_類名__屬性名(原理)
2. 這種隱藏式對外不對內的,因為在類內部檢測語法時所有的**統一都發生的變形
3. 這種變形只在檢測語法時發生一次,在類定義之後新增的__開頭的屬性並不會發生變形
4. 如果父類不想讓子類覆蓋自己的屬性,可以在屬性前加__開頭
可無須在物件繫結方法後加括號.
class people:def __init__(self,name,weight,height):
self.name=name
self.weight=weight
self.height=height
@property
def bmi(self):
return self.weight / (self.height ** 2)
obj=people('egon',70,1.82)
obj.height=1.85
print(obj.bmi)
需要了解的property的用法1. 什麼是多型class people:
def __init__(self,name):
self.__name=name
@property
def name(self):
return '' %self.__name
@name.setter
def name(self,new_name):
if type(new_name) is not str:
print('名字必須是str型別')
return
self.__name=new_name
@name.deleter
def name(self):
del self.__name
obj=people('egon')
print(obj.name)
# obj.name=123
# print(obj.name)
del obj.name
print(obj.__dict__)
同一種事物的多種形態
2. 為何要用多型
多型性:指的是可以在不用考慮物件具體型別的前提下而直接使用物件下的方法
通過父類強制規定子類必須要包含父類中的函式名,但不推薦,一般都是約定俗成.
import abcclass animal(metaclass=abc.abcmeta):
@abc.abstractmethod
def speak(self):
pass
# animal() # 父類不能例項化,因為父類本身就是用來制定標準的
class people(animal):
def speak(self):
print('say hello')
# def jiao(self):
# print('say hello')
class dog(animal):
def speak(self):
print('汪汪汪')
class pig(animal):
def speak(self):
print('哼哼哼')
peo=people()
dog1=dog()
pig1=pig()##
peo.speak()
dog1.speak()
pig1.speak()
javaScript 物件導向學習day3筆記
所謂繼承,就是物件自己沒有的成員,呼叫別的物件的 1.自己重寫並繫結此方法 需用到proto屬性,引入新的相容性問題,不推薦 if object.create else f.prototype obj new o new f return o var newobj new f obj1 2.自己封裝...
QT程式設計 day3
當建立乙個專案之後,資料夾裡會有6個檔案。其中有乙個為.pro.user檔案,這個檔案不屬於專案源 的一部分,它是qtcreator專屬的使用者定製專案設定,儲存了這個專案本地化的設定。qtcreator開啟專案時會讀取這個設定檔案,比較該專案裡的檔案配置與當前的專案位置等是否符合,符合就載入配置,...
遊戲程式設計基礎day3
虛擬環境管理工具 配置虛擬環境 workon home 路徑 mkvirtualenv 虛擬環境名 在workon home下建立虛擬環境 建立完畢後自己啟用 workon 虛擬環境名 使用workon 後面跟的這個虛擬環境 deactivate 退出虛擬環境 建立遊戲最小系統 建立遊戲專案的時候必...