通过元类来控制类的产生

通过元类来控制类的产生

自定义元素:来控制类的产生,可以控制类名,可以控制类的继承父类,控制类的名称空间

自定义元类必须继承type,写一个类继承type 这种类都叫元类

class Mymeta(type):
    # def __init__(self,*args,**kwargs):
    def __init__(self,name,bases,dic):
        # self 就是Person类
        print(name)
        print(bases)
        print(dic)
        #练习一:加限制 控制类名必须以sb开头
        if not name.startswith('sb'):
            raise Exception('类名没有以sb开头')
        #练习二:类必须加注释
        print(self.__dict__['__doc__'])
# #metaclass=Mymeta  指定这个类生成的时候,用自己写的Mymeta这个元类
class Person(object,metaclass=Mymeta):
    '''
    注释
    '''
    school='oldboy'
    def __init__(self,name):
        self.name=name
    def score(self):
        print('分数是100')

p=Person()

class Mymeta(type):
    def __init__(self,name,bases,dic):
        print(self.__dict__['__doc__'])
        doc=self.__dict__['__doc__']
        if not doc:
            #没有加注释
            raise Exception('你的类没有加注释')
class Person(object,metaclass=Mymeta):
    '''
    我加了注释
    '''
    school='oldboy'
    def __init__(self,name):
        self.name=name
    def score(self):
        print('分数是100')

原文地址:https://www.cnblogs.com/aden668/p/11453555.html

时间: 2024-10-09 19:19:26

通过元类来控制类的产生的相关文章

面向对象,元类,控制类,对象的创建

""" call 调用的意思 ? 在在对象被调用时 执行 函数 类 自定义元类 的目的 ? 1.可以通过call 来控制对象的创建过程 ? 2.可用控制类的创建过程 """ 自定义一个元类 元类也是一个类 但是需要继承type class MyMeta(type):?self 表示要创建对象的那个类(Person) *args是调用Person类时传入的参数??  def __call__(self, *args, **kwargs):??   

第十三章、元类之控制类的调用过程

目录 第十三章.元类之控制类的调用过程 一.__call__ 第十三章.元类之控制类的调用过程 一.__call__ 作用:控制类的调用过程,实际上在控制:对象的产生 控制名称空间 class Mymeta(type): def __call__(self,*args, **kwargs): obj=self.__new__(self)#生成空对象 obj.__init__(*args, **kwargs)#调用obj的__init__() obj.__dict__['attr']=kwargs

UML 边界类、控制类、实体类

来源:http://bbs.csdn.net/topics/300192417 UML中类有三种主要的版型:边界类.控制类和实体类.引入边界类.控制类及实体类的概念有助于分析和设计人员确定系统中的类. 边界类位于系统与外界的交界处,窗体.报表.以及表示通讯协议的类.直接与外部设备交互的类.直接与外部系统交互的类等都是边界类.通过用例图可以确定需要的边界类,每个Actor/Use Case对至少要一个边界类,但并非每个Actor/Use Case对要唯一的边界类. 实体类保存要放进持久存储体的信息

2.自定义元类控制类的创建行为

工作中,现有的类可能不能满足实际的个性化需求,那么我们需要自己定义元类来控制类的行为 本篇是对自定义元类控制类的创建行为的理解 自定义元类控制类型为分创建行为和实例化行为,其中控制创建行为是通过__Init__方法实现的. 1)我们知道,根据开发规范,类的名称是要大写的,但开发者不大写当然也可以运行的 2)开发者在创建类时,最好在类中加入一些注释,方便以后回头理解,也方便产品经理的理解,当然开发者不写这些注释也没关系 现在我要告诉你,类名必须大写!新建类必须要有注释!就是这么任性,哈哈 实现代码

1.元类介绍/2.自定义元类控制类的行为/3.控制类的实例化行为/4.控制类的实例化行为的应用

1.元类介绍 1.储备知识exec()参数1;字符串形式得命令参数2.全局作用域(字典形式),如果不指定默认就使用globals()参数3.局部作用域(字典形式),如果不指定默认就使用locals() 2.python 一切皆对象 ,对象可以怎么用? 2.1. 都可以被引用 x=obj 2.2. 都可以当作函数得参数传入 2.3. 都可以当作函数得返回值 2.4. 都可以当作容器类得元素 li=[func,time] # 类也是对象,Foo=type() 类是属于type() 类 3.什么叫元类

通过元类控制类的产生

自定义元类:来控制类的产生:可以控制类名,可以控制类的集成父类,控制类的名称空间 type 自定义元类必须集成type,写一个类继承type 这种类都叫元类 class Mymeta(type): #def __init__(self,*args,**kwargs): def __init__(self,name,bases,dic): #sef就是Person类 print(name) print(bases) print(dic) #加限制 控制类名必须以sb开头 if not name.s

通过元类控制类的调用过程

__call__ 控制类的调用过程,实际上在控制:对象的产生 class Mymeta(type): def __call__(self,*args,**kwargs): #print('xxx') return 1 class Person(object,metaclass=Mymeta): school = 'oldboy' def __init__(self,name): self.name =name def score(self): print('分数是100') p =Person(

cocos2d-x 源码分析 : control 源码分析 ( 控制类组件 controlButton)

源码版本来自3.1rc 转载请注明 cocos2d-x源码分析总目录 http://blog.csdn.net/u011225840/article/details/31743129 1.继承结构 control的设计整体感觉挺美的,在父类control定义了整个控制事件的基础以及管理,虽然其继承了Layer,但其本身和UI组件的实现并没有关联.在子类(controlButton,controlSwitch,controlStepper等中实现不同的UI组件).下面通过源码来分析control与

一个摄像机控制类的总结

一个摄像机控制类的总结 实现功能: 通过鼠标的操纵,控制摄像机环绕模型对象旋转,从而进行对模型对象的观察. 设计思路: 首先根据摄像机的当前方位,计算它应该到达的目标方位: 然后通过插值运算,将摄像机逐帧移动到该目标方位. 过程描述: 1. 计算摄像机的目标方位. 先计算摄像机本地坐标系轴向与世界坐标系轴向的夹角,作为方位的初始值.注意,这里只取摄像机需要旋转变化的坐标轴即可,这里我们用的是X和Y轴. 在鼠标的控制过程中,实时的修改此夹角值. 对修改后的夹角值进行限位处理,使之满足我们的需要.