zoukankan      html  css  js  c++  java
  • 元类介绍

    # 一切皆对象,满足以下几点的话就是一个对象
    # 1.都可以被引用,a=obj
    # 2.都可以当作函数的参数传入
    # 3.都可以当作函数的返回值
    # 4.都可以当作容器类的元素,l=[func,time,obj,1]

    # 储备知识 exec 类的详解
    # 参数1:字符串形式的命令
    # 参数2:全局作用域(字典形式),如果不指定默认就使用 globals()
    # 参数3:局部作用域(字典形式),如果不指定默认就使用 locals()

    # g = {
    # 'x':1,
    # 'y':2
    # }
    #
    # l = {}
    #
    # exec('''
    # global x,m
    # x=10
    # m=100
    # ''',
    # g,l)
    # print(g)
    # print(l)



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

    # 定义类的两种方式:
    # 方式一:class
    class Chinese1:
    conuntr = 'China'

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

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

    obj1 = Chinese1('小江',18)
    print(obj1,obj1.name,obj1.age)

    # 方式二:type

    # 定义类的三要素:类名,父类,局部名称空间
    class_name = 'Chinese2'
    class_bases = (object,)

    class_body = '''
    conuntr = '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) # 构建名称空间

    Chinese2 = type(class_name,class_bases,class_dic) # 传入参数创建类
    obj2 = Chinese2('小江',18)
    print(obj2,obj2.name,obj2.age)
  • 相关阅读:
    php 工厂模式实例
    nginx多虚拟主机配置
    PHP提高编程效率的方法
    PHP 多态
    锁机制之PHP文件锁
    深入认识javascript中的eval函数(转载)
    PHP&MYSQL 常用的一些性能检测
    寒假作业1:问答题
    软件测试基础知识总结
    七种测试驱动模式
  • 原文地址:https://www.cnblogs.com/jt925/p/10502894.html
Copyright © 2011-2022 走看看