zoukankan      html  css  js  c++  java
  • 通过元类控制类的产生

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

    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.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')
    
  • 相关阅读:
    Sublime Text 2快捷键大全
    JavaSE
    Ubuntu16.04 install ideaIC-2017.2.5.tar.gz
    Ubuntu/CentOS hadoop-2.x Cluster Setup
    Ubuntu16.04 install hadoop-2.8.1.tar.gz Cluster Setup
    12file
    11input/output
    10function
    09FlowControl
    08test
  • 原文地址:https://www.cnblogs.com/luodaoqi/p/11528874.html
Copyright © 2011-2022 走看看