zoukankan      html  css  js  c++  java
  • day33---作业

    1、在元类中控制把自定义类的数据属性都变成大写

    class Mymeta(type):
        def __new__(cls, class_name, class_bases, class_dic):
            new_class_dic = {}
            for k, v in class_dic.items():
                if not callable(v) and not k.startswith('__'): 如果值不是一个可调用对象,且键不是以'__'开头
                    new_class_dic[k.upper()] = v
                else:
                    new_class_dic[k] = v
            return type.__new__(cls, class_name, class_bases, new_class_dic)
    
    
    class Beast(metaclass=Mymeta):
        name = '姜春'
        age = 26
    
        def __init__(self, gender):
            self.gender = gender
    
        def show(self):
            print(f"""
            禽兽档案==>
            姓名:{Beast.name}
            年龄:{Beast.age}
            性别:{self.gender}
            """)
    
    
    b = Beast('female')
    print(Beast.__dict__)
    
    # 创造b发生3件事(类(Beast)的调用==>Mymeta.__call__)
    # 1、调用Beast.__new__,产生一个空对象
    # 2、调用Beast.__init__,完成初始化
    # 3、返回一个初始化的对象
    
    # Beast = Mymeta()  ==> type.__call__
    # 调用Mymeta.__new__,产生一个空对象
    # 调用Mymeta.__init__,完成初始化
    # 返回一个初始化化得对象
  • 相关阅读:
    移动端前端布局的必看前提
    单词统计
    用户场景分析
    学习进度(九)
    团队项目
    学习进度(二)
    数据可视化
    大二下,学习进度(一)
    求最大子数组的和
    构建之法3
  • 原文地址:https://www.cnblogs.com/surpass123/p/12712282.html
Copyright © 2011-2022 走看看