首页 > 编程语言 > 详细

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

时间:2019-07-12 14:09:10      阅读:112      评论:0      收藏:0      [点我收藏+]

储备知识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全栈之路----面向对象开发----元类介绍

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!