宝贝步入Python3中的元类
我将通过讨论python类型系统的一些基础知识以及随后介绍META-CLASSES的概念来开始本课程。
首先,让我们看一下这些基本示例:
因此,您在python中创建的每件事都具有与之关联的类型。 在上面的示例中,变量名称的类型为str
( string
),age类型的类型为int
( integer
),但是这些变量中的每一个都具有__class__
的属性或属性,在大多数情况下,我们在python中称其为magic方法是在创建变量时实例化的类,换句话说,它是变量的类型。 因此,在这种情况下, type(name)
和name.__class__
将返回与变量name
str
( string
)相同的数据。
看到:
但是,此想法也扩展到您自己创建的类。
看到:
根据示例,我们可以看到变量me
的类型为User
而该类型本质上是我们最初实例化的类,因此要创建新实例,请使用类名以及预期的参数或参数,这些参数或参数将在以后成为关联的类型。 但是,类也具有与它们关联的类型。
看到:
因此, User
类的类型为type
,这意味着类型类已使用其预期参数实例化,而python会负责创建类User
。 此外, type
类采用的参数是(clsname,bases,methods)
,因此让我们看看它们在后台如何工作。
看到:
因此,本质上python所做的是,当您创建类时,它会使用clsname, bases and the functions or methods
并将其提供给类type
。
那么为什么要使用meta-classes ,事实证明,类type
实际上是可以自定义和修改的东西。 问题是我们该怎么做。 我们修改类的方法是通过继承。 即
看到:
完成后,我认为我们已经准备就绪!!!! 所以我们去试驾
看到:
如我们所见,这几乎与类类型一样精确。 如果您在使用我们创建的custom_type_class
创建新类时注意到,则必须在制作该类之前先打印一些信息,这意味着该类是通过我们之前创建的custom_type_class
创建的,因此上述类是该类的一个示例被称为META-CLASS 。
因此,一个元类的简单定义是:
监视或监督类定义中发生的情况的另一种方法
因此,python提供的是一种在类定义中使用上述方法的方法,即
基本上,创建一个类时的缺省参数metaclass
的说法是类的type
,我们不希望出现这种情况,所以我们修改使用custom_class_type
我们前面作为参数创建metaclass
等于是该类User
将与创建custom_class_type
。
结论
就这样! 您刚刚使用python学习了元类的基础知识,感谢后续! 如果您喜欢这个,请给这个故事几个反应,以便更多的人看到它!
如果您喜欢这个,请给我买点东西:),如果您有任何疑问或意见,请不要忘了发表评论。
您可以通过电子邮件[email protected]与我联系。 谢谢您的时间再见:)。
From: https://hackernoon.com/baby-steps-to-metaclasses-in-python3-xc4s249u