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

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

时间:2018-04-27 02:13:00      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:HERE   理解   最好   注释   try   名称   自定义   字母   控制   

工作中,现有的类可能不能满足实际的个性化需求,那么我们需要自己定义元类来控制类的行为

本篇是对自定义元类控制类的创建行为的理解

自定义元类控制类型为分创建行为和实例化行为,其中控制创建行为是通过__Init__方法实现的。

1)我们知道,根据开发规范,类的名称是要大写的,但开发者不大写当然也可以运行的

2)开发者在创建类时,最好在类中加入一些注释,方便以后回头理解,也方便产品经理的理解,当然开发者不写这些注释也没关系

现在我要告诉你,类名必须大写!新建类必须要有注释!就是这么任性,哈哈

实现代码如下:

class MyPeople(type):
    def __init__(self, class_name, class_bases, class_dic):
        if not class_name.istitle():
            raise TypeError("类的首字母必须大写")
        if not "__doc__" in class_dic or not class_dic["__doc__"].strip():
            raise TypeError("必须有注释,且注释不能为空")
        super(MyPeople, self).__init__(class_name, class_bases, class_dic)


class People(object, metaclass=MyPeople):
    """
    there must be doc,
    and the doc must be in the first line
    """
    country = "China"
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def tell_info(self):
        print(f"{self.name} is from {self.country}, and he is {self.age} years old")


chen = People("chenjun", 21)
chen.tell_info()

 

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

标签:HERE   理解   最好   注释   try   名称   自定义   字母   控制   

原文地址:https://www.cnblogs.com/tarantino/p/8955452.html

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