返回

python-禁用某些方法的继承

发布时间:2022-04-25 14:49:09 483
# node.js

假设我有一个有10个方法的类pass这里,但假设他们会有一些实现)

class KlassOne:
    def method_one(self, x):
        pass
    
    def method_two(self, y, z):
        pass
    ...
    def method_five(self, a):
        pass
    ...
    def method_ten(self, b):
        pass 

第二类继承自第一类。

class KlassTwo(KlassOne):
    def method_eleven(self, w):
        pass

但是KlassTwo不想要所有的十种方法KlassOne让我们说KlassTwo只想继承这四种方法,

wanted_methods = [method_one, method_three, method_eight, method_nine]

其余的都不适用于KlassTwo一个例子可能是,KlassOnePersonKlassTwoRobotmethod_fiveEatsFood所以,我们的Robot不想继承EatsFood鉴于method_oneBodyWeight,让我们假设这对双方都有意义PersonRobot所以Robot想要继承method_one.

但如何才能实现这种部分继承呢???

一种方法是使用NotImplemented例如

class KlassTwo(KlassOne):
    def method_five(self, a):
        raise NotImplemented

并对每种不需要的方法都进行同样的处理。

或者另一种方法是使用构图,比如,

class KlassTwo:
    def __init__(self, x):
        self.t = KlassOne.method_one(self, t)

诸如此类,只使用想要的方法。

但是我想使用继承,并且完全禁用某些方法的继承,比如,

class KlassOne:
    @not_inheritable
    def method_five(self, a):
        pass

这样子类就不会method_five.我如何做到这一点?

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像