gpt4 book ai didi

python - Python 中的元类 : a couple of questions to clarify

转载 作者:太空狗 更新时间:2023-10-30 01:24:04 27 4
gpt4 key购买 nike

在使用元类崩溃后,我深入研究了 Python 中的元编程主题,我有几个问题,恕我直言,可用文档中没有明确回答。

  1. 在元类中同时使用 __new____init__ 时,它们的参数必须定义相同吗?
  2. 在元类中定义类 __init__ 的最有效方法是什么?
  3. 有什么方法可以在元类中引用类实例(通常是self)?

最佳答案

  1. 同时使用 __new____init__ 时在元类中,它们的参数必须定义相同?

    我认为Alex Martelli解释它最简洁:

    class Name(Base1,Base2): <<body>>
    __metaclass__==suitable_metaclass

    表示

    Name = suitable_metaclass('Name', (Base1,Base2), <<dict-built-by-body>>)

    所以别想了suitable_metaclass 作为元类片刻,只是把它当作一个类(class)。每当你看到

    suitable_metaclass('Name', (Base1,Base2), <<dict-built-by-body>>)

    它告诉你suitable_metaclass 的 __new__方法必须有签名像

    def __new__(metacls, name, bases, dct)

    还有一个__init__方法

    def __init__(cls, name, bases, dct)

    所以签名并不完全相同,但它们仅在第一个参数上有所不同。

  2. 什么是最有效的定义方式元类中的类 __init__

    高效是什么意思?这是不需要定义 __init__除非你愿意。

  3. 有没有办法引用类实例(通常是自己)元类?

    不,您不需要。任何取决于类(class)的东西实例应在类定义,而不是在元类。

关于python - Python 中的元类 : a couple of questions to clarify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6562538/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com