python 魔法方法 python常用魔法方法

2021-10-11 13:16:34 字數 2333 閱讀 6461

in [1]:

#其實__str__相當於是str()方法 而__repr__相當於repr()方法。str是針對於讓人更好理解的字串格式化,而repr是讓機器更好理解的字串格式化。

class test():

def __init__(self,word):

self.word=word

def __str__(self):

return "my name is %s" % self.word

def __repr__(self):

return "my name is %s" % self.word

a=test('jack')

print(str(a))

print(repr(a))

my name is jack

my name is jack

in [2]:

#__hash__() hash()函式的裝飾器

class test(object):

def __init__(self, world):

self.world = world

x = test('world')

p = test('world')

print(hash(x) == hash(p))

print(hash(x.world) == hash(p.world))

#以上是hash函式的用法,用於獲取物件的雜湊值

class test2(object):

def __init__(self, song):

self.song = song

def __hash__(self):

return 1241

x = test2('popo')

p = test2('janan')

print(x, hash(x))

print(p, hash(p))

false

true

<__main__.test2 object at> 1241

<__main__.test2 object at> 1241

in [4]:

#__getattr__() 一旦我們嘗試訪問乙個並不存在的屬性的時候就會呼叫,而如果這個屬性存在則不會呼叫該方法。

class test(object):

def __init__(self, world):

self.world = world

def __getattr__(self, item):

return '不存在的屬性'

x = test('jack')

print(x.world1)

不存在的屬性

in [5]:

#__setattr__() 所有設定引數屬性的方法都必須經過這個魔法方法

class test(object):

def __init__(self, world):

self.world = world

def __setattr__(self, name, value):

#判斷變數名

if name == 'world':

object.__setattr__(self, name, value+'!')

else:

object.__setattr__(self, name, value)

jack!

tom!

in [6]:

#__delattr__()

class test(object):

def __init__(self, world):

self.world = world

def __delattr__(self, item):

object.__delattr__(self, item)

jack

attributeerror traceback (most recent call last)

in attributeerror: 'test' object has no attribute 'world'

in [11]:

#__getattribute__() 攔截所有的屬性獲取

class test(object):

def __init__(self, world):

self.world = world

def __getattribute__(self, item):

print('獲取: %s' % item)

return '失敗'

獲取: world

失敗獲取: world

失敗

Python魔法方法 基本的魔法方法

new cls 1.new 是在乙個物件例項化時候所呼叫的第乙個方法 2.他的第乙個引數是這個類,其他的引數是用來直接傳遞給 init 方法 3.new 決定是否使用該 init 方法,因為.new 可以直接呼叫其他類的構造方法,或者返回別的例項物件來作為本類的例項,如果 new 沒有返回例項物件,...

python 魔法方法

魔法方法具有一定的特徵 new cls class capstr str def new cls,string 修改新類裡的new方法,需傳入乙個引數 string string.upper return str.new cls,string 用父類裡的new方法進行返回,直接飯後構造後的物件def...

python魔法方法

python魔術方法是特殊方法的暱稱。它是簡單而又強大,為了被python直譯器呼叫而存在的方法。python提供豐富的元物件協議,讓語言的使用者和核心開發者擁有並使用同樣的工具 例子引用 流暢的python 一摞python風格的紙牌 import collections namedtuple用來...