如何在python中更改对象的类型

时间:2020-08-18 08:53:08

标签: python python-3.x

来自pydocs

就像其身份一样,对象的类型也是不可更改的。 [1]

来自footnote

在某些受控条件下,有时可以更改对象的类型。不过,通常这不是一个好主意,因为如果处理不当,它可能会导致某些非常奇怪的行为。

在什么情况下我们可以更改对象的类型以及如何更改

1 个答案:

答案 0 :(得分:2)

class A:
    pass

class B:
    pass

a = A()

isinstance(a, A)  # True
isinstance(a, B)  # False
a.__class__  # __main__.A

# changing the class
a.__class__ = B

isinstance(a, A)  # False
isinstance(a, B)  # True
a.__class__  # __main__.B

但是,我不记得有帮助的实际示例。通常,类修饰是在装饰器或元类创建类(不是类的对象)时进行的。例如,dataclasses.dataclass是一个装饰器,它接受一个类并在该类的基础上构造另一个类(请参见the source code)。