为了账号安全,请及时绑定邮箱和手机立即绑定

什么是Python中的元类?

什么是Python中的元类?

PIPIONE 2019-05-22 15:27:07
什么是Python中的元类?什么是元类,我们用它们做什么?
查看完整描述

5 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

元类的一个用途是自动向实例添加新属性和方法。

例如,如果你看一下Django模型,他们的定义看起来有点令人困惑。看起来好像只是定义了类属性:

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

但是,在运行时,Person对象充满了各种有用的方法。查看源代码,了解一些神奇的元素。


查看完整回答
反对 回复 2019-05-22
?
精慕HU

TA贡献1845条经验 获得超8个赞

其他人已经解释了元类如何工作以及它们如何适合Python类型系统。这是他们可以使用的一个例子。在我编写的测试框架中,我想跟踪定义类的顺序,以便稍后我可以按此顺序实例化它们。我发现使用元类这样做最容易。

class MyMeta(type):

    counter = 0

    def __init__(cls, name, bases, dic):
        type.__init__(cls, name, bases, dic)
        cls._order = MyMeta.counter        MyMeta.counter += 1class MyType(object):              # Python 2
    __metaclass__ = MyMetaclass MyType(metaclass=MyMeta):    # Python 3
    pass

凡是是的子类,MyType然后得到一个类属性_order,它记录在其中的类中定义的顺序。


查看完整回答
反对 回复 2019-05-22
  • 5 回答
  • 0 关注
  • 1179 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信