元類的介紹


儲備知識exec
exec(object,globals,locals)

參數1:字符串形式的命令
參數2:全局作用域(字典形式),如果不指定默認使用globals()
參數3:全局作用域(字典形式)。如果不指定默認使用locals().

g={
'x':1,
'y':2
}
l={}


exec('''
global x,m
x=10
m=100

z=3
''',g,l)
global x,m定義了一個全局變量
z=3 exec 將z=3定義到局部變量
print(g)
print(l)

一切皆對象,對象可以怎么用?
1都可以被引用,x=obj
2都可以當做函數的參數傳入
3都可以當做函數的返回值
4都可以當做容器類的元素,l={func,time,obj,l}



#類也是對象
# class Foo:
# pass
#
# obj=Foo()
# print(type(obj)) #返回<class '__main__.Foo'>
# print(type(Foo)) #返回<class 'type'>
#
# class Bar:
# pass
# print(type(Bar))

#產生類的類稱之為元類,默認所有用class定義的類,他們的元類都是type



#定義類的兩種方式:
#方式一:class
# class Chinese:
# country='China'
#
# def __init__(self,name,age):
# self.name=name
# self.age=age
#
# def talk(self):
# print('%s in talking' %self.name)
#

#方式二:type
#定義類的三要素
class_name='Chinese' #類名
class_bases=(object,) #類的父類

class_body='''
country='China'

def __init__(self,name,age):
self.name=name
self.age=age

def talk(self):
print('%s in talking' %self.name)

'''

class_dic={}
exec(class_body,globals(),class_dic)#改作用域傳到class_dic
print(class_dic)

Chinese1=type(class_name,class_bases,class_dic)
obj1=Chinese1('EGON',18)
print(obj1,obj1.name,obj1.age)




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM