Python元类最通俗的解释

本文介绍了Python中的元类,元类是用于创建类的对象。通过`type()`函数可以定义类,它接受类名、基类列表和属性字典作为参数。当继承`type`并重写`__new__`方法时,可以在类定义时执行自定义逻辑。示例中展示了如何定义一个元类`MyType`并在创建类`B`和`C`时打印相关信息。元类常用于修改类的行为或实现特殊功能。
摘要由CSDN通过智能技术生成

Python元类最通俗的解释

对象的最大特征就是在于其拥有属性, 可以发现, 使用class关键字定义一个空类, 这个类就算不实例化, 也会拥有一些属性, 也就是说类本身也是一个对象, 除了使用class关键字, 还可以通过type()定义类.

type(name, bases, attrs) 参数说明: name是一个字符串, 用来表示类名; bases是一个数组, 用来表示基类; attrs是一个字典, 用来表示类的属性和方法; type是一个类, 通过type(name, bases, attrs)方式对type调用时, 实际调用的是type的__new__()方法.

也是说如果继承type, 并重写__new__()方法, 那就可以在解释器定义类的时候, 再执行一些其他逻辑. 比如: 类的方法加了__前缀的话, 会自动改名, 想改变这点就需要重写__new__.

元类: 继承了type的类就是元类

"""
    对象的最大特征就是在于其拥有属性, 可以发现, 使用class关键字定义一个空类, 这个类就算不实例化, 也会拥有一些属性, 也就是说类本
身也是一个对象, 除了使用class关键字, 还可以通过type()定义类.

    type(name, bases, attrs) 参数说明: name是一个字符串, 用来表示类名; bases是一个数组, 用来表示基类; attrs是一个字典, 用来表
示类的属性和方法; type是一个类, 通过type(name, bases, attrs)方式对type调用时, 实际调用的是type.__new__()方法.

    也是说如果继承type, 并重写__new__()方法, 那就可以在解释器定义类的时候, 再执行一些其他逻辑. 比如: 类的方法加了__前缀的话, 会
自动改名, 想改变这点就需要重写__new__.

    元类: 继承了type的类就是元类
"""


class MyType(type):
    """定义一个元类"""

    def __new__(mcs, name, bases, attrs):
        print('=' * 50)
        print('name:', name)
        print('bases:', bases)
        print('attrs:', attrs)
        return type.__new__(mcs, name, bases, attrs)


# 使用type定义类示例
A = type('A', (), {})

# 使用元类方式(1)
B = MyType('B', (), {})


# 使用元类方式(2)
class C(metaclass=MyType):
    pass


"""output
==================================================
name: B
bases: ()
attrs: {}
==================================================
name: C
bases: ()
attrs: {'__module__': '__main__', '__qualname__': 'C'}
"""
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值