python之物件導向元類
call方法:
1view codeclass
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()
元類:
1view codeclass
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))
自定義元類:
1view code#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
(f)55
56print(f.name)
友情學習鏈結
物件導向 元類
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 物件名.方法名 類屬性 針對類物件定義的屬性,訪問類屬性方法 類名.類屬性 物件名.類屬性 類方法 針對類物件定義的方法,內部可直接訪問類屬性和其他...