考虑以下最小化问题:
因此,NormalizedVector对象与Vector对象相同,只是增加了归一化处理。
是否可能向Vector添加一个方法,以便每当调用normalize方法时,对象自动子类化为NormalizedVector?
我知道我可以使用抽象工厂模式,但这仅在创建时对对象进行子类化时才起作用:我希望能够对先前已创建的对象进行子类化。
我发现一些解决方案基于重新分配__ class __方法,但这些被不鼓励使用。我愿意修改上述模式,使其更具“Pythonic”。
from math import sqrt
class Vector(object):
def __init__(self, x, y, z):
self.v = [x, y, z]
def normalize(self):
x, y, z = self.v
norm = sqrt(x**2 + y**2 + z**2)
self.v = [x/norm, y/norm, z/norm]
# other methods follow
class NormalizedVector(Vector):
def __init__(self, x, y, z):
super(Vector, self).__init__(x, y, z)
self.normalize()
因此,NormalizedVector对象与Vector对象相同,只是增加了归一化处理。
是否可能向Vector添加一个方法,以便每当调用normalize方法时,对象自动子类化为NormalizedVector?
我知道我可以使用抽象工厂模式,但这仅在创建时对对象进行子类化时才起作用:我希望能够对先前已创建的对象进行子类化。
我发现一些解决方案基于重新分配__ class __方法,但这些被不鼓励使用。我愿意修改上述模式,使其更具“Pythonic”。
normalized
实例属性的向量类? - Andrés Pérez-Albela H.