zoukankan      html  css  js  c++  java
  • Python----面向对象---练习二:在元类中控制自定义的类无需__init__方法

    练习二:在元类中控制自定义的类无需__init__方法

     1 class Mymeta(type):
     2 
     3     def __call__(self, *args, **kwargs):
     4         print(self)
     5         print(args)
     6         print(kwargs)
     7         if args:
     8             raise TypeError('实例化传参必须为关键字形式')
     9         obj = object.__new__(self)
    10 
    11         for k, v in kwargs.items():
    12             obj.__dict__[k.upper()] = v
    13         return obj
    14 
    15 
    16 class Chinese(metaclass=Mymeta):
    17     country = 'China'
    18     tag = 'Legend of the Dragon'  # 龙的传人
    19 
    20     def walk(self):
    21         print('%s is walking' % self.name)
    22 
    23 
    24 p = Chinese(name='egon', age=18, sex='male')
    25 print(p.__dict__)
    26 
    27 结果为
    28 
    29 <class '__main__.Chinese'>
    30 ()
    31 {'name': 'egon', 'age': 18, 'sex': 'male'}
    32 {'NAME': 'egon', 'AGE': 18, 'SEX': 'male'}

    利用__call__方法

  • 相关阅读:
    NOI2015刷题记录
    [WC2013][UOJ58]糖果公园 莫队算法
    啦啦啦~
    完全平方数
    构建之法
    测试更新
    程序的测试
    程序的封装
    构建之法5.5-6-7章观后感
    给徐侃童鞋的一个汉堡
  • 原文地址:https://www.cnblogs.com/xudachen/p/8667091.html
Copyright © 2011-2022 走看看