Python類的特殊方法

2021-08-29 01:16:47 字數 2578 閱讀 3337

doc描述類的資訊

class foo(object):

# 單引號和雙引號都可以

「」「這裡描述類的資訊」""

def func(self):

pass

print(foo.doc) #>>>這裡描述類的資訊

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

class foo(object):

defcall(self, *args, **kwargs):

print(「running call」, args, kwargs)

foo = foo()

foo(1, 2, 3, name = 「userpython」) #>>>running call (1, 2, 3)

foo()(1, 2, 3, name = 「userpython」) #>>>running call (1, 2, 3)

dict檢視類或物件中的所有成員

class foo(object):

definit(self, name, age):

self.name = name

self.age = age

foo = foo(「userpython」, 17)

print(foo.dict) #列印類裡的所有屬性,不包括例項屬性

print(foo.dict) #列印所有例項屬性,不包括類屬性

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

class foo(object):

definit(self, name, age):

self.name = name

self.age = age

def __str__(self):

return "" % self.name

foo = foo(「userpython」, 17)

print(foo) #>>>

getitemsetitemdelitem用於索引操作,如字典。分別表示獲取、設定、刪除資料

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)

foo = foo()

foo[「name」] = 「userpython」 #>>>setitemname userpython 觸發__setitem__

foo[「name」] #>>>getitemname 觸發__getitem__

del foo[「name」] #>>>delitemname 觸發__delitem__

newmetaclass

class foo(object):

def __init__(self, name):

self.name = name

foo = foo(「userpython」)

『』』上述**中,foo是通過foo類例項化的物件,其實,不僅foo是乙個物件,foo類本身也是乙個物件,因為在python中一切事物都是物件。

如果按照一切事物都是物件的理論:foo物件時通過執行foo類的構造方法建立,那麼foo類物件應該也是通過執行某個類的構造方法建立。

『』』print(type(foo)) #>>> 表示foo物件是由foo類建立

print(type(foo)) #>>>表示foo類物件是由type類建立

class foo(object):

def func(self):

print(「hello userpython」)

def func(self):

print(「hello %s」 % self.name)

definit(self, name, age): #構造方法

self.name = name

self.age = age

foo = type(『foo』, (object, ), )

foo = foo(「userpython」, 19)

foo.func()

print(type(foo))

原文:

PYTHON類的特殊方法

例項1 python view plain copy coding utf 8 class firstdemo object 這裡是乙個doc a 10 類屬性 def demo self 第乙個方法 pass def demo2 self 第二個方法 pass print firstdemo.di...

Python類的特殊方法

特殊方法,也稱為魔術方法 特殊方法都是使用 開頭和結尾的 特殊方法一般不需要我們手動呼叫,需要在一些特殊情況下自動執行 定義乙個person類 class person object 人類 def init self,name age self.name name self.age age str ...

Python面試 類的特殊方法

class foo def init self print foo init def call self print foo call f foo f 過載了括號運算子 foo init foo call class decorator def init self,func print decora...