Python 是否可以创建一个类,其每个实例都有不同的类型?

Python 是否可以创建一个类,其每个实例都有不同的类型?,python,python-3.x,metaprogramming,Python,Python 3.x,Metaprogramming,这更多的是一个理论问题,与实际问题无关 考虑到你有一些职业: class A(): pass a = A() type(a) # <class '__main__.A'> 元类的相关PEP: 您应该将uu new_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。例如: from random import randint class A: def __new__(cls, *args

这更多的是一个理论问题,与实际问题无关

考虑到你有一些职业:

class A():
    pass

a = A()
type(a)
# <class '__main__.A'>
元类的相关PEP:

您应该将uu new_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。例如:

from random import randint


class A:
    def __new__(cls, *args, **kwargs):
        random_cls = type('random_name' + str(randint(0, 99)), (object,), {})
        return random_cls()


a = A()
b = A()
print(type(a))
# <class '__main__.random_name90'>
print(type(b))
# <class '__main__.random_name22'>

__元类中的new_uu; in在创建类A时被调用,但在创建它的实例时不会像您所期望的那样被调用。

在Python上下文中,类和类型是同义词。因此,重言式地说,如果一个实例具有不同的类型,那么它一定是不同类的实例。@Amadan我知道这一点,但没有意识到如何使问题听起来更清楚。是否可以创建一个类,其构造函数将生成不同类的对象?有效——不过,我承认这也为解决方案提供了一个提示:D如果你可以这样表达,你可能就不必问这个问题了。所以,不要责怪你,只是向那些不一定是你自己的人澄清一下,他们可能没有意识到。如果你可以这样说,你可能就不必问这个问题了确切地说:D我太沉迷于元类,以至于找不到更简单的解决方案。
a = A()
b = A()
type(a)
# <class '__main__.A66'>
type(b)
# <class '__main__.A66'>
from random import randint


class A:
    def __new__(cls, *args, **kwargs):
        random_cls = type('random_name' + str(randint(0, 99)), (object,), {})
        return random_cls()


a = A()
b = A()
print(type(a))
# <class '__main__.random_name90'>
print(type(b))
# <class '__main__.random_name22'>