如何删除子类中的继承函数?
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")
注意:它在 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")