gpt4 book ai didi

python - 参数化类和元类之间有什么区别(请使用 Python 代码示例)?

转载 作者:太空狗 更新时间:2023-10-29 22:08:31 26 4
gpt4 key购买 nike

你好 Stack Overflow 贡献者,

我现在是一名学习 Python 的新手程序员,我遇到了 this site这有助于解释面向对象的范例。我知道元类是类的类(比如元目录是目录的目录,等等),但我遇到了一些问题:元类和参数化类之间的实际区别是什么,根据网站的定义?

如果可以,请提供 Python 代码示例以说明两者之间的差异。感谢您的帮助!

最佳答案

Python 没有(或不需要)“参数化类”,因此很难在 Python 中提供它们的示例;-)。元类就是“类的类”:通常是type(只要在 Py2 中,你记得通过继承 object 使类成为新样式,或其他一些内置类型或其他新式类——旧式类是 Py2 中的遗留产物,幸运的是在 Py3 中消失了,理想情况下你应该忘记它们)。您可以出于多种高级目的创建自定义元类(通常是 type 的子类),但您不太可能需要(尤其是考虑到这一点,自 python 2.6 以来,许多过去需要自定义元类的工作现在可以使用类装饰器更简单地完成。

给定任何类 C,type(C) 是它的元类。

参数化类是一个完全不同的概念。在 Python 中最接近它的可能是一个工厂函数,它根据其参数创建和返回一个类:

def silly(n):
class Silly(object):
buh = ' '.join(n * ['hello'])
return Silly

Silly1 = silly(1)
Silly2 = silly(2)
a = Silly1()
print(a.buh)
b = Silly2()
print(b.buh)

将打印

hello
hello hello

同样,它绝对不是您经常需要的东西 — 创建几个仅在一个或几个参数上有所不同的类。无论如何,如您所见,它与类的类(AKA 元类)完全无关,在这个例子中它总是 type (在我能想到的几乎所有更现实的例子中 -我只是选择举一个简单的例子,这样做的意义很难辨别,而不是一个现实的,因此必然非常复杂;-)。

关于python - 参数化类和元类之间有什么区别(请使用 Python 代码示例)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3496029/

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