Python之物件導向元類

2022-06-17 20:12:13 字數 2873 閱讀 9462

python之物件導向元類

call方法:

1

class

people:

2def

__init__

(self,name):

3 self.name=name4#

5def

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

6print('

call')

7#89 p=people('

george')

10print

(callable(people))

11print

(callable(p))

1213 p()

view code

元類:

1

class

people:

2def

__init__

(self,name):

3 self.name=name45

6 p=people('

egon')

789#

print(type(p))10#

11#print(type(people))

1213

#typer--->類------>物件

1415

16class

foo:

17 x=1

18def

run(self):

19pass

20print

(type(foo))

212223#

type成為元類,是所有類的類,利用type模擬class關鍵字的建立類的過程

24def

run(self):

25print('

%s is runing

' %self.name)

2627 class_name='

bar'

28 bases=(object,)

29 class_dic=

3334 bar=type(class_name,bases,class_dic)

35print

(bar)

36print(type(bar))

view code

自定義元類:

1

#class foo(metaclass=type):2#

x=13

#def run(self):4#

print('running')5#

6#7#

# type('foo',(object,),)89

1011

#class mymeta(type):12#

def __init__(self,class_name,class_bases,class_dic):13#

# print(self)14#

# print(class_name)15#

# print(class_bases)16#

# print(class_dic)17#

for key in class_dic:18#

if not callable(class_dic[key]):continue19#

if not class_dic[key].__doc__:20#

raise typeerror('小子,你沒寫注釋,趕緊去寫')21#

22## type.__init__(self,class_name,class_bases,class_dic)23#

class foo(metaclass=mymeta):24#

x=125

#def run(self):26#

'run function'27#

print('running')

2829

#foo=mymeta('foo',(object,),)

3031

#print(foo.__dict__)

3233

3435

class

mymeta(type):

36def

__init__

(self,class_name,class_bases,class_dic):

37pass

38def

__call__(self, *args, **kwargs):39#

print(self)

40 obj=self.__new__

(self)

41 self.__init__(obj,*args,**kwargs) #

obj.name='egon'

42return

obj43

class foo(metaclass=mymeta):

44 x=1

45def

__init__

(self,name):

46 self.name=name #

obj.name='egon'

47def

run(self):48'

run function'49

print('

running')

50#print(foo.__dict__)

5152 f=foo('

egon')

5354

print

(f)55

56print(f.name)

view code

友情學習鏈結

物件導向 元類

1.exec 1 exec source,globals none,locals none,2 execute the given source in the context of globals and locals.34 the source may be a string representi...

Python之物件導向 類

主要從以下三個方面講述類 1 什麼叫物件導向,為什麼要物件導向?2 python類的三大特性 封裝 繼承 多型。3 類的基本概念。4 類的例子和關鍵點解釋。1.什麼叫物件導向,為什麼要物件導向?將大家共有的特性剝離出來進行抽象的過程就是物件導向,這是 物件導向 最直觀的理解。物件導向 個人理解,類就...

python之物件導向

類 是乙個特殊的物件,class a 定義的類屬於 類物件 類的例項 obj a 屬於 例項物件 例項屬性 init 定義例項屬性 例項方法 self 物件名.方法名 類屬性 針對類物件定義的屬性,訪問類屬性方法 類名.類屬性 物件名.類屬性 類方法 針對類物件定義的方法,內部可直接訪問類屬性和其他...