Python Day 2 物件導向程式設計

2021-10-03 17:22:01 字數 2360 閱讀 2806

@property裝飾器:將乙個函式變成屬性呼叫

在繫結屬性的時候,如果把屬性資料暴露出去,雖寫起來簡單但無法檢查引數,導致資料可以隨意更改。所以需要乙個set和乙個get,通過set來檢查設定引數。

訪問器:getter

把乙個訪問器變為屬性只需要加上@property

只定義getter方法不定義setter方法就是乙個唯讀屬性

修改器:setter

@age.setter

def age(self,age):

self._age = age

在使用@property的時候會生成乙個@***.setter去給屬性賦值

slot

如果我們需要限定自定義型別的物件只能繫結某些屬性,可以通過在類中定義__slots__變數來進行限定。(只對當前類的物件生效,不對子類生效)

# 限定person物件只能繫結_name, _age和_gender屬性

__slots__ = ('_name', '_age', '_gender')

靜態方法和類方法

靜態方法 @staticmethod

例如當我們在驗證三角形三條邊能否構成乙個三角形時,呼叫這個方法是三角形物件尚未建立,所以這個方法屬於三角形類而不屬於三角形物件,即為靜態方法。

@staticmethod

def is_valid(a, b, c):

return a + b > c and b + c > a and a + c > b

def perimeter(self):

return self._a + self._b + self._c

def area(self):

half = self.perimeter() / 2

return sqrt(half * (half - self._a) *

(half - self._b) * (half - self._c))

def main():

a, b, c = 3, 4, 5

# 靜態方法和類方法都是通過給類發訊息來呼叫的

if ********.is_valid(a, b, c):

t = ********(a, b, c)

類方法 @classmethod

可以在類中定義類方法,第乙個引數約定名為cls,代表當前類相關的資訊和物件(類本身也是乙個物件),通過這個引數我們可以獲取和類相關的資訊並且可以創造出來類的物件。

類之間的關係

三種關係:is-a,has-a, use-a

**is-a:**繼承或泛化,eg學生和人

**has-a:**關聯,eg.部門和員工。 如果是整體和部分的關聯,稱之為聚合關係;如果整體進一步負責了部分的生命週期稱之為合成關係。

**use-a:**依賴,eg.司機有駕駛的行為(方法),其中(引數)有汽車,那司機和汽車就是依賴關係。

繼承和多型

提供繼承資訊的稱之為父類,超類或基類。

得到繼承資訊的稱之為子類,派生類或衍生類。

子類在繼承父類的方法後,可以對已有版本給出新的實現版本,稱之為重寫(override)。

不同的子類表現出不同的行為稱之為多型(poly-morphism)

class pet(object,metaclass = abcmeta):

def __init__(self,nickname):

self._nickname = nickname

@abstractmethod

def make_voice(self):

pass

class dog(pet):

def make_voice(self):

print('%s: 汪汪汪...' % self._nickname)

class cat(pet):

def make_voice(self):

print('%s: 喵...喵...' % self._nickname)

def main():

pets = [dog('旺財'), cat('凱蒂'),dog('大黃')]

for pet in pets:

pet.make_voice()

將pet類處理成乙個抽象類,不能夠建立物件的類。

**動視sb,war zone還等更新,更新完還得排隊,吐了 **

python 模組詳解 python day 22

第三方模組 擴充套件模組 沒在安裝python直譯器的時候安裝的那些功能 自定義模組 你寫的功能如果是乙個通用的功能,那你就把它當做乙個模組 內建模組 安裝python直譯器的時候跟著裝上的那些方法 import my module 要匯入乙個py檔案的名字,但是不加.py字尾名 import my...

python Day 2 編寫資料庫模組

所以,我們還要建立乙個簡單可靠的資料庫訪問模型,在乙個執行緒中,能既安全又簡單地運算元據庫。為什麼不選擇sqlalchemy?sqlalchemy太龐大,過度地物件導向設計導致api太複雜。所以我們決定自己設計乙個封裝基本的select insert update和delete操作的db模組 tra...

某菜菜子的Python Day2 學習小結

在進行了第一天的運算子學習後,菜菜子同學開始學習了針對python中關於資料的一些知識 python的資料結構,python的資料型別以及對應資料型別的增刪查改 數字型int 整型 float 浮點型 complex 虛數 boolean數字型別 表達真或假 x true y fal 0 false...