class fish(object):
def __init__(self, name):
self.name = name
print("my name is: %s" % self.name)
f = fish("fish_9527")
my name is: fish_9527
class fish(object):
def __new__(cls, *args, **kwargs):
print("建立物件時,new 方法會被自動呼叫,然後分配空間")
def __init__(self):
print("fish 類初始化")
f = fish()
建立物件時,new 方法會被自動呼叫,然後分配空間
class fish(object):
def __new__(cls, *args, **kwargs):
print("建立物件時,new 方法會被自動呼叫")
return super().__new__(cls) # 為物件分配空間,並返回物件的引用
def __init__(self):
print("fish 類初始化")
f = fish()
print(f)
建立物件時,new 方法會被自動呼叫
fish 類初始化
<__main__.fish object at 0x000002769064ef28>
class fish(object):
# 記錄第乙個被建立物件的引用
instance = none
def __new__(cls, *args, **kwargs):
# 判斷類屬性是否是空物件
if cls.instance is none:
# 呼叫父類的方法,為第乙個物件分配空間
cls.instance = super().__new__(cls)
# 返回類屬性儲存的物件的引用
return cls.instance
f1 = fish()
print(f1)
f2 = fish()
print(f2)
<__main__.fish object at 0x000002769065b048>
<__main__.fish object at 0x000002769065b048>
class fish(object):
# 記錄第乙個被建立物件的引用
instance = none
init_flag = false
def __new__(cls, *args, **kwargs):
# 判斷類屬性是否是空物件
if cls.instance is none:
# 呼叫父類的方法,為第乙個物件分配空間
cls.instance = super().__new__(cls)
# 返回類屬性儲存的物件的引用
return cls.instance
def __init__(self):
# 判斷是否執行過初始化動作
if fish.init_flag:
return
# 若沒執行過,則執行初始化動作
print("fish 類初始化")
# 修改類屬性的標記
fish.init_flag = true
f1 = fish()
print(f1)
f2 = fish()
print(f2)
fish 類初始化
<__main__.fish object at 0x00000276906632e8>
<__main__.fish object at 0x00000276906632e8>
>>> class a(object):
... def __call__(self):
... print("this is __call__")
...>>> a = a()
>>> a
<__main__.a object at 0x000001dfdf94e5c0>
>>> print(a)
<__main__.a object at 0x000001dfdf94e5c0>
>>>
>>> class a(object):
... def __str__(self):
... return "this is __str__"
...>>> a = a()
>>> a
<__main__.a object at 0x000001dfdf94ea58>
>>> print(a)
this is __str__
>>>
>>> class a(object):
... def __repr__(self):
... return "this is __repr__"
...>>> a = a()
>>> a
this is __repr__
>>> print(a)
this is __repr__
>>>
>>> class a(object):
... def __str__(self):
... return "this is __str__"
... def __repr__(self):
... return "this is __repr__"
...>>> a = a()
>>> a
this is __repr__
>>> print(a)
this is __str__
>>>
php類中常用的魔術方法
1.construct 建構函式,2.destruct 析構函式,3.call callstatic 呼叫乙個不可訪問的方法 呼叫不可訪問的靜態方法時被呼叫 class demo1 php version 5.3.0 之後才可以 public static function callstatic n...
常用魔術方法
觸發時機 當乙個物件在記憶體中被銷毀的時候自動執行 class a num 0 def init self,name a.num 1 self.name name def del self a.num 1 print self.name,被刪除,還剩下 個物件 format a.num a a 張三...
PHP 常用的魔術方法
建構函式 construct 析構函式 destruct 當呼叫乙個未定義 包括沒有許可權訪問 的方法是呼叫此方法 call 處理靜態方法呼叫 callstatic 當呼叫乙個未定義的屬性時訪問此方法 get 給乙個未定義的屬性賦值時呼叫 set 當在乙個未定義的屬性上呼叫isset 函式時呼叫此方...