返回介绍

习题解答

发布于 2024-01-29 22:24:14 字数 627 浏览 0 评论 0 收藏 0

1.元类是用来创建一个类的类。常规的类默认的是type类的实例。元类通常是type类的子类,它重新定义了类创建协议方法,以便定制在一条class语句的末尾发布的类创建调用;它通常会重定义__new__和__init__方法以接入类创建协议。元类也可以以其他的方式编码——例如,作为简单函数——但是它们负责为新类创建和返回一个对象。

2.在Python 3.0及其以后的版本中,在类标题栏使用一个关键字参数:class C(metaclass=M)。在Python 2.X中,使用类属性:__metaclass__=M。在Python 3.0中,类标题栏也可以在metaclass关键字参数之前命名常规的超类(例如,基类)。

3.由于二者都是在一条class语句的末尾自动触发,因此类装饰器和元类都可以用来管理类。装饰器把一个类名重新绑定到一个可调用对象的结果,而元类把类创建指向一个可调用对象,但它们都是可以用作相同目的的钩子。要管理类,装饰器直接扩展并返回最初的类对象。元类在创建一个类之后扩展它。

4.由于二者都是在一条class语句的末尾自动触发,因此类装饰器和元类都可以用来管理类实例,通过插入一个包装器对象来捕获实例创建调用。装饰器把类名重新绑定到一个可调用对象,而该可调用对象在实例创建时运行以保持最初的类对象。元类可以做同样的事情,但是,它们必须也创建类对象,因此,它们用在这一角色中更复杂一些。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文