14 類的常用魔術方法舉例

2022-08-28 18:33:07 字數 3167 閱讀 7349

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 函式時呼叫此方...