码迷,mamicode.com
首页 > 编程语言 > 详细

Python全栈之路----面向对象开发----元类介绍

时间:2019-07-12 13:07:17      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:obj   产生   code   def   容器类   方式   容器   开发   形式   

储备知识exec,可以被当作函数来看待。

参数1:字符串形式的命令

参数2:全局作用域(字典形式),如果不指定默认就使用globals()

参数3:局部作用域(字典形式),如果不指定默认就使用locals()

g = {x:1, y:2}
l = {}
exec(‘‘‘
global x,m
x = 10
m = 100

z = 3
‘‘‘, g, l)

python中一切皆对象,对象可以怎么用?

1.都可以被引用,x = obj

2.都可以当作函数的参数传入

3.都可以当作函数的返回值

4.都可以当作容器类的元素,l = {func, time, obj, 1}

# 类也是对象
class Foo:
    pass

obj = Foo()

产生类的类称之为元类,默认所有用class定义的类,他们的类是type

定义类的两种方式:

# 方法一:class
class Chinese:  # Chinese = type(...)
    country = China
    
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def talk(self):
        print(%s is talking % self.name)

# 方法二:type

定义类的三要素:类名,类的基类们,类的名称空间

class_name = Chinese
class_bases = (object,)
class_body = ‘‘‘
class Chinese:  # Chinese = type(...)
    country = ‘China‘
    
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def talk(self):
        print(‘%s is talking‘ % self.name)
‘‘‘
class_dic = {}
exec(class_body, globals(), class_dic)
print(class_dic)  # {‘Chinese‘: <class ‘__main__.Chinese‘>}

Chinese = type(class_name, class_bases, class_dic)
print(Chinese)  # <class ‘__main__.Chinese‘>

 

Python全栈之路----面向对象开发----元类介绍

标签:obj   产生   code   def   容器类   方式   容器   开发   形式   

原文地址:https://www.cnblogs.com/Moxiaoyu666/p/11175324.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!