在python中更改基类安全吗?

2024-09-30 03:23:01 发布

您现在位置:Python中文网/ 问答频道 /正文

像这样的问题是存在的,但没有一个完全像这样,我没有找到完全满意的答案。在

我在做一个基于主体的生物模型。假设我有一个a型细胞和一个B型细胞,它们是根据生物钟衰老的。假设当a型细胞达到一定年龄时,它变成B型细胞

我有一份牢房清单。我不想只创建新的B单元,并将它们添加到库存中,而将A单元保留在库存中。在

这看起来有用,但安全吗?在

class B(object):
    pass

class A(object):
    def changeToB(self):
        self.__class__ = B

或者,有更好的方法吗?在


Tags: 答案模型selfobjectdef库存生物pass
3条回答

虽然这对口译员来说可能是安全的,但对于试图理解正在发生的事情的人来说绝对是不安全的。在

很难找到一个比生物细胞更自然的对象设计映射,而你正试图抛弃那里的自然存在。细胞具有-A年龄和各种机制作为年龄的函数打开和关闭。骨细胞的存在和它的存在状态不同,但它的存在和它的年龄不同。在

如果我在编写这样一个模型,我肯定会在对象模型中考虑到这一点。在

很多年前我在做解析器的时候尝试过。它似乎做了我当时想要的,所以从语言的角度来看是足够安全的,但是现在我老了,更聪明了,我不认为我会用它来编写其他人可能必须维护的代码——从这个角度看,我不认为它很“安全”

这可能是代表团的好地方。在内部,您保留所需的实际对象类型,并在适当时将其切换出去。在

class B(object):
    def do_something(self):
        print "I'm a B"

class A(object):
    def do_something(self):
        print "I'm an A"

class AorB(object):
    def __init__(self):
        self.identity = A()

    def changeToB(self):
        self.identity = B()

    def do_something(self):
        self.identity.do_something()

相关问题 更多 >

    热门问题