單例設計模式
**站物件
印表機物件
……python
的直譯器獲得物件的引用後,將引用作為第乙個引數,傳遞給__init__
方法
重寫__new__
方法 的**非常固定!只執行一次初始化工作
定義乙個類屬性
init_flag
標記是否執行過初始化動作,初始值為false
在__init__
方法中,判斷init_flag
,如果為false
就執行初始化動作然後將
init_flag
設定為true
這樣,再次自動呼叫__init__
方法時,初始化動作就不會被再次執行了class musicplayer(object):
# 記錄第乙個被建立物件的引用
instance = none
# 記錄是否執行過初始化動作
init_flag = false
def __new__(cls, *args, **kwargs):
# 1. 判斷類屬性是否是空物件
if cls.instance is none:
# 2. 呼叫父類的方法,為第乙個物件分配空間
cls.instance = super().__new__(cls)
# 3. 返回類屬性儲存的物件引用
return cls.instance
def __init__(self):
if not musicplayer.init_flag:
musicplayer.init_flag = true
# 建立多個物件
player1 = musicplayer()
print(player1)
player2 = musicplayer()
print(player2)
Python學習筆記 物件導向
物件導向 oop 基本概念 物件導向程式設計 object oriented programming簡寫 oop 1 物件導向基本概念 之前的學習程式設計方式就是面向過程的 面向過程和物件導向,是兩種不同的程式設計方式 對比面向過程的特點,可以更好的了解什麼是物件導向 2 過程和函式 科普 過程是最...
Python物件導向(四)
如果在子類中需要父類的構造方法就需要顯示的呼叫父類的構造方法,或者不重寫父類的構造方法。詳細說明可檢視 python 子類繼承父類建構函式說明。在呼叫基類的方法時,需要加上基類的類名字首,且需要帶上 self 引數變數。區別在於類中呼叫普通函式時並不需要帶上 self 引數 python 總是首先查...
java學習筆記(四)之物件導向
成員變數和靜態變數的區別 1,兩個變數的生命週期不同。成員變數隨著物件的建立而存在,隨著物件的被 而釋放。靜態變數隨著類的載入而存在,隨著類的消失而消失。2,呼叫方式不同。成員變數只能被物件呼叫。靜態變數可以被物件呼叫,還可以被類名呼叫。3,別名不同。成員變數也稱為例項變數。靜態變數稱為類變數。4,...