相关链接:Python对象转换
我最近学到Python可以这样更改一个实例的类:
class Robe:
pass
class Dress:
pass
r = Robe()
r.__class__ = Dress
我正在尝试弄清楚是否有一种情况可以有用地对此对象进行“转换”。我在IDLE中试验了一下,发现将其分配给另一个类并不会调用新类的__init__
方法,尽管如果需要可以显式调用。
我几乎可以想到的每个用例都可以通过组合更好地实现,但我是一个编码新手,我知道什么呢。 ;)
__new__
/构造函数方面,我可以看到如果你在某个库中定义了一个类,并且你创建了自己的类继承它,那么你可以通过创建前者的实例然后进行“转换”来创建后者的实例。然而,为什么不直接实例化继承的类呢?我承认我不理解构造函数的概念或__new__
方法的功能。 - henrebotha__new__
方法被调用以构造其实例。如果存在,则调用Derived.__new__
将触发对Derived()
的调用。通常情况下,__new__
会通过super
调用返回由object.__new__
创建的新对象,但它并不一定非得这样做。在上面的示例中,我们从工厂函数中获取了实例,然后进行了自定义。还可以参见此前的问题。 - Blckknght