python中的魔法屬性和方法 一

2021-08-20 22:01:46 字數 2406 閱讀 2375

模組本身是乙個物件,而每個物件都會有乙個__doc__屬性。該屬性用描述該物件的作用。

#__doc__的作用

class demo(object):

"""這是乙個簡單的例子"""

def test(self):

"""這是乙個例項物件的方法"""

print("life is short,you need python!")

def test2(self):

print("never old to lenrn")

print(demo.__doc__)

print(demo.test.__doc__)

print(demo.test2.__doc__)

輸出結果如下:

這是乙個簡單的例子

這是乙個例項物件的方法

none

即會輸出對這個物件的描述資訊,如果沒有給物件設定描述資訊,則會返回none

經常都在使用if __name__ == 『__main__』:,那麼這句話到底是什麼意思,__name__又有什麼含義呢?來看乙個例子:建立乙個名字為test.py 的檔案

def test_fun():

if __name__ == '__main__':

print('i am in my domain,my name is %s' % __name__)

else:

print('someone else calls me!,my name is %s' % __name__)

test_fun()

執行結果為:

i am in my domain,my name is __main__
再繼續建立乙個程式名字為import_test.py檔案,在這個程式裡面將test.py當做乙個模組來匯入使用,如下:

import test

test.test_fun()

執行結果如下:

someone else calls me!,my name is test

someone else calls me!,my name is test

你會發現,someone else calls me!,my name is test被列印了兩遍,第一次列印是在import test的時候,第二次列印是在執行test.test_fun()的時候列印的。以上兩個程式,列印出來的__name__的結果不一樣,從之前的__main__變成了test。__name__這個系統變數顯示了當前模組執行過程中的名稱,如果當前程式執行在這個模組中,__name__ 的名稱就是__main__如果不是,則為這個模組的名稱。

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

__class__表示當前操作的物件是由哪個類建立的

建立乙個test.py檔案

class person(object):

def __init__(self):

self.name='laowang'

在建立乙個main.py檔案

from test import person

boj=person()

print(obj.__module__)

print(obj.__class__)

輸出結果為:

test

分別列印出當前物件所在模組名和當前物件是由哪個類建立的

__new__ 用來建立乙個物件的時候自動呼叫的方法,__init__為物件初始化的時候自動呼叫的方法。二者有什麼不同呢?執行順序是什麼呢?請看例子:

class person(object):

def __new__(cls, name, age):

print('__new__ called.')

return super().__new__(cls)

def __init__(self, name, age):

print('__init__ called.')

self.name = name

self.age = age

if __name__ == '__main__':

piglei = person('piglei', 24)

print(piglei)

執行結果為:

__new__ called.

__init__ called.

可以發現,在建立乙個物件的時候,是先執行__new__方法,然後再去執行__init__方法,new是建立物件,init是對這個物件進行初始化操作

Python高階 魔法屬性和方法

1.doc 表示類的描述資訊 2.module 和 class 當前操作物件所屬的模組和類 3.init 初始化方法,類建立物件時,自動觸發執行 4.del 物件在記憶體中釋放時,自動觸發執行 5.call 物件後加括號 物件 自動觸發執行 6.dict 類或物件中的所有屬性 7.str 列印物件時...

python中的魔法屬性

目錄無論人或事物往往都有不按套路出牌的情況,python的類屬性也是如此,存在著一些具有特殊含義的屬性,詳情如下 class foo 描述類資訊,這是用於看片的神奇 def func self pass print foo.doc 輸出 類的描述資訊test.py coding utf 8 clas...

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

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