如何删除子类中的继承函数?

2024-10-04 01:24:28 发布

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

注意:它是用python编写的。简化代码是

class main:
    def __init__(self):
        pass
    def unneededfunction(self):
        print("unneeded thing")

class notmain(main):
    def __init__(self):
        pass 
    #code for getting rid of unneededfunction here

问题是,如何使notmain.unneededfunction不存在(即调用它会导致错误)


Tags: 代码selfforinitmaindefcodepass
3条回答

我研究了一下,我想我会放一个delattr。 在代码中(如果有其他人出现):

class main:
    def __init__(self):
        pass
    def unneededfunction(self):
        print("unneeded thing")

class notmain(main):
    def __init__(self):
        pass 
    
delattr(notmain,"unneededfunction")

您是否需要删除它?(即,它抛出一个属性错误)。或者你能逃脱部分继承吗

这里的第一个答案应该针对后者: How to perform partial inheritance

如果您只是想让它在调用时抛出一个错误,那么应该可以:

class notmain(main):
    def __init__(self):
        pass 
    def unneededfunction(self):
        raise NotImplementedError("explanation")

或者您可以尝试在构建类时讨论的Mixin方法: Is it possible to do partial inheritance with Python?

如果您不希望notmain具有unneededfunction,那么notmain不应该是main的子类。以这种方式与制度抗争,它破坏了整个继承点

如果您确实坚持这样做,notmain可以重新定义unneededfunction,并引发与unneededfunction不存在时相同的异常,AttributeError。但是,你又一次违反了规则

除此之外,您不能从notmain中删除unneededfunction,因为notmain不拥有该方法,而其父类main拥有该方法

相关问题 更多 >