python中的魔法屬性

2022-07-06 16:57:11 字數 2852 閱讀 2298

目錄無論人或事物往往都有不按套路出牌的情況,python的類屬性也是如此,存在著一些具有特殊含義的屬性,詳情如下:

class foo:

""" 描述類資訊,這是用於看片的神奇 """

def func(self):

pass

print(foo.__doc__)

#輸出:類的描述資訊

test.py

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

class person(object):

def __init__(self):

self.name = 'laowang'

main.py

from test import person

obj = person()

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

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

class person:

def __init__(self, name):

self.name = name

self.age = 18

obj = person('laowang') # 自動執行類中的 __init__ 方法

注:此方法一般無須定義,因為python是一門高階語言,程式設計師在使用時無需關心記憶體的分配和釋放,因為此工作都是交給python直譯器來執行,所以,__del__的呼叫是由直譯器在進行垃圾**時自動觸發執行的。

class foo:

def __del__(self):

pass

注:__init__方法的執行是由建立物件觸發的,即:物件 = 類名();而對於 __call__ 方法的執行是由物件後加括號觸發的,即:物件()或者類()()

class foo:

def __init__(self):

pass

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

print('__call__')

obj = foo() # 執行 __init__

obj() # 執行 __call__

類的例項屬性屬於物件;類中的類屬性和方法等屬於類,即:

class province(object):

country = 'china'

def __init__(self, name, count):

self.name = name

self.count = count

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

print('func')

# 獲取類的屬性,即:類屬性、方法、

print(province.__dict__)

# 輸出:

obj1 = province('山東', 10000)

print(obj1.__dict__)

# 獲取 物件obj1 的屬性

# 輸出:

obj2 = province('山西', 20000)

print(obj2.__dict__)

# 獲取 物件obj1 的屬性

# 輸出:

class foo:

def __str__(self):

return 'laowang'

obj = foo()

print(obj)

# 輸出:laowang

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

class foo(object):

def __getitem__(self, key):

print('__getitem__', key)

def __setitem__(self, key, value):

print('__setitem__', key, value)

def __delitem__(self, key):

print('__delitem__', key)

obj = foo()

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

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

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

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

class foo(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 = foo()

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

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

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

Python 高階 魔法屬性

1.doc class foo 檢視說明資訊 def func self pass print foo.doc 輸出結果 檢視說明資訊learn 26 2 magic test.py 2.module 表示當前操作的物件在哪個模組 class 表示當前操作的物件的類是什麼 class person ...

python中的魔法屬性和方法 一

模組本身是乙個物件,而每個物件都會有乙個 doc 屬性。該屬性用描述該物件的作用。doc 的作用 class demo object 這是乙個簡單的例子 def test self 這是乙個例項物件的方法 print life is short,you need python def test2 s...

python 高階 魔法屬性和 魔法方法

魔法屬性和魔法方法 python 中預先定義好了一些以 形式的屬性和方法。這些屬性和方法用來表示特定的意義和功能。doc 屬性 文件字串,docstring 用來對模組,類,方法進行說明的字串 可以通過 help 方法在 獲取幫助時自動呼叫 module class bases mro 屬性 mod...