码迷,mamicode.com
首页 > 其他好文 > 详细

通过元类控制类的产生

时间:2019-09-16 19:09:42      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:ict   元类   oldboy   war   raise   base   没有   person   print   

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

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')

通过元类控制类的产生

标签:ict   元类   oldboy   war   raise   base   没有   person   print   

原文地址:https://www.cnblogs.com/luodaoqi/p/11528874.html

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