宝贝步入Python3中的元类

我将通过讨论python类型系统的一些基础知识以及随后介绍META-CLASSES的概念来开始本课程。

首先,让我们看一下这些基本示例:

宝贝步入Python3中的元类

因此,您在python中创建的每件事都具有与之关联的类型。 在上面的示例中,变量名称的类型为strstring ),age类型的类型为intinteger ),但是这些变量中的每一个都具有__class__的属性或属性,在大多数情况下,我们在python中称其为magic方法是在创建变量时实例化的类,换句话说,它是变量的类型。 因此,在这种情况下, type(name)name.__class__将返回与变量name strstring )相同的数据。

看到:

宝贝步入Python3中的元类

但是,此想法也扩展到您自己创建的类。

看到:

宝贝步入Python3中的元类

根据示例,我们可以看到变量me的类型为User而该类型本质上是我们最初实例化的类,因此要创建新实例,请使用类名以及预期的参数或参数,这些参数或参数将在以后成为关联的类型。 但是,类也具有与它们关联的类型。

看到:

宝贝步入Python3中的元类

因此, User类的类型为type ,这意味着类型类已使用其预期参数实例化,而python会负责创建类User 此外, type类采用的参数是(clsname,bases,methods) ,因此让我们看看它们在后台如何工作。

看到:

宝贝步入Python3中的元类

因此,本质上python所做的是,当您创建类时,它会使用clsname, bases and the functions or methods并将其提供给类type

那么为什么要使用meta-classes ,事实证明,类type实际上是可以自定义和修改的东西。 问题是我们该怎么做。 我们修改类的方法是通过继承。

看到:

宝贝步入Python3中的元类

完成后,我认为我们已经准备就绪!!!! 所以我们去试驾

看到:

宝贝步入Python3中的元类

如我们所见,这几乎与类类型一样精确。 如果您在使用我们创建的custom_type_class创建新类时注意到,则必须在制作该类之前先打印一些信息,这意味着该类是通过我们之前创建的custom_type_class创建的,因此上述类是该类的一个示例被称为META-CLASS

因此,一个元类的简单定义是:

监视或监督类定义中发生的情况的另一种方法

因此,python提供的是一种在类定义中使用上述方法的方法,即

宝贝步入Python3中的元类

基本上,创建一个类时的缺省参数metaclass的说法是类的type ,我们不希望出现这种情况,所以我们修改使用custom_class_type我们前面作为参数创建metaclass等于是该类User将与创建custom_class_type

结论

就这样! 您刚刚使用python学习了元类的基础知识,感谢后续! 如果您喜欢这个,请给这个故事几个反应,以便更多的人看到它!

如果您喜欢这个,请给我买点东西:),如果您有任何疑问或意见,请不要忘了发表评论。

您可以通过电子邮件[email protected]与我联系。 谢谢您的时间再见:)。

From: https://hackernoon.com/baby-steps-to-metaclasses-in-python3-xc4s249u