Python類的魔法方法

2021-08-21 18:26:29 字數 1810 閱讀 8804

名字重整,類中例項物件的私有屬性,可以使用__dict__檢視,檢視到的私有屬性其實已經改名為_類名__屬性名,可以使用例項物件._類名__屬性名檢視。

表示類的描述資訊

__module__ 表示當前操作的物件在那個模組

__class__ 表示當前操作的物件的類是什麼

test.py

test.py

# -*- coding:utf-8 -*-

class person(object):

def __init__(self):

self.name = 'ventus'

main.py

from test import person

obj = person()

print(obj.__module__) # 輸出 test 即:輸出模組

print(obj.__class__) # 輸出 test.person 即:輸出類

初始化方法,通過類建立物件時,自動觸發執行

當物件在記憶體中被釋放時,自動觸發執行。

物件後面加括號,觸發執行。

class classtest(): 

def __init__(self):

pass

def __call__(self, *args, **kwargs):

print('__call__')

obj = classtest() # 執行 __init__

obj() # 執行 __call__

類或物件中的所有屬性

如果乙個類中定義了__str__方法,那麼在列印 物件 時,預設輸出該方法的返回值。

#coding=utf-8

class test():

def __getitem__(self, key):

print('__getitem__', key)

def __setitem__(self, key, value):

print('__setitem__', key, value)

def __delitem__(self, key):

print('__delitem__', key)

obj = test()

result = obj['k1'] # 自動觸發執行 __getitem__

obj['k2'] = 'laowang' # 自動觸發執行 __setitem__

del obj['k1'] # 自動觸發執行 __delitem__

-*- coding:utf-8 -*-

class test(object):

def __getslice__(self, i, j):

print('__getslice__', i, j)

def __setslice__(self, i, j, sequence):

print('__setslice__', i, j)

def __delslice__(self, i, j):

print('__delslice__', i, j)

obj = test()

obj[-1:1] # 自動觸發執行 __getslice__

obj[0:1] = [11,22,33,44] # 自動觸發執行 __setslice__

del obj[0:2] # 自動觸發執行 __delslice__

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

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

Python 類內建魔法方法

一 str 方法 python class 內建函式有很多,想到了先記下來.str str 方法和 init 方法類似,都是一些特殊方法,都會自動執行的,init 是初始化的作用,str 則是用來返回物件的字串表示式。在我們編寫乙個新的python類的時候,總是在最開始位置寫乙個初始化方法 init...

類的魔法方法

構造和析構 構造 類定義時,有時候寫 init 方法,有時候卻沒有,這是為什麼呢?init self,答 需求!new cls 重寫str字串類 calss upstr str def new cls,string string會原封不動的傳給init方法 string string.upper r...