python中的多型,內建方法和屬性的使用以及設計模式
阿新 • • 發佈:2019-02-15
基類
一,新式類,舊式類
新式類 :後面是以object結尾的
舊式類(經典類)
基類:定義類時,後面的括號後面寫上object,會自動繼承object類
多型
1.封裝:根據職責將屬性和方法封裝到一個抽象的類中
定義類的準則
2.繼承:實現程式碼的重用,相同的程式碼不需要重複的編寫
設計類的技巧
子類針對自己特有的需求,編寫特定的程式碼
3.多型
不同的子類(這是之前提到的繼承的知識)
物件呼叫相同的方法,產生不同的執行結果
class Dog(object): def __init__(self,name): self.name = name def game(self): print '%s 蹦蹦跳跳的玩。。' % self.name class Xiaotianquan(Dog): def game(self): print '%s 飛到天上玩' % self.name class Person(object): def __init__(self,name): self.name = name def game_with_dog(self,dog): print '%s 和 %s 快樂的玩耍' % (self.name,dog.name) dog.game() # 1.建立一個狗物件 #wangcai = Dog('旺財') wangcai = Xiaotianquan('飛天神狗') # 2.建立一個人物件 xiaoming = Person('小明') # 讓小明和狗玩 xiaoming.game_with_dog(wangcai)
內建方法和屬性
# _*_ coding:utf-8 _*_
"""
file: __del__方法.py
date: 2018-07-17 11:17 AM
author: westos-dd
desc:
__del__方法:
在python中
當使用類名()建立物件時,為物件分配完空間後,
自動呼叫__init__方法
當一個物件被從記憶體中銷燬前(把這個物件從記憶體中刪除掉),
會自動呼叫__del__方法
應用場景
__del__如果希望在物件被銷燬前,再做一些事情,可以考慮一下__del__方法
"""
# _*_ coding:utf-8 _*_ """ file: __str__方法.py date: 2018-07-17 11:20 AM author: westos-dd desc: 在python中,使用python輸出物件變數,預設情況下, 會輸出這個變數引用的物件是由哪>一個類建立的物件, 以及在記憶體中的地址(十六進位制表示) 如果在開發中,希望使用print輸出物件變數時, 能夠列印自定義的內容,就可以利用__str__這個內建方法了 """
設計模式
# _*_ coding:utf-8 _*_ """ file: 01.py date: 2018-07-22 3:03 PM author: westos-dd desc: """ class MusicPlayer(object): instance = None init_flag = False def __new__(cls, *args, **kwargs): # 第一個引數 cls:哪一個類呼叫,就傳遞哪一個類 # 第二個引數 *args:多值引數 # 第三個引數 **kwargs:多值的字典引數 # 建立物件的時候,new方法會被自動呼叫 # 重寫了父類的方法 if cls.instance is None: cls.instance = object.__new__(cls) return cls.instance def __init__(self): if MusicPlayer.init_flag: return print '初始化播放器' MusicPlayer.init_flag = True player1 = MusicPlayer() print player1 player2 =MusicPlayer() print player2