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

How do you delete an inherited function in a subclass?

注意:它在 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 不存在(即调用它会导致错误)?

如果您不希望 notmain 拥有 unneededfunction,那么 notmain 不应是 main 的子 class。这么和系统斗,完全没有继承的意义。

如果您真的坚持这样做,notmain 可以重新定义 unneededfunction 并引发与 unneededfunction 不存在 AttributeError 时相同的异常.但是,你又要反其道而行之了。

除此之外,您无法从 notmain 中删除 unneededfunction,因为 notmain 不拥有该方法,它的父方法 class main

需要删除它吗? (即,它抛出一个属性错误)。或者你可以摆脱部分继承吗?

这里的第一个答案应该解决后者: 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?

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

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

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