我在Python 3.5中遇到了一个问题。我有一个类(B ),它继承了另一个类(A)。我试图只获取B中声明的方法,但它返回了B类中声明的方法,也从a类继承了方法。
这里的代码:
class A:
def a_method_1(self):
""" WILL BE OVERRIDEN """
return True
def a_method_2(self):
""" WON'T BE OVERRIDEN """
return True
class B(A):
def b_method_1(self):
""" NOT OVERRIDEN """
return True
def get_methods(self):
"""
NOT OVERRIDEN
This function filters special python methods.
"""
methods = [method for method in dir(self) if callable(getattr(self, method))
and not method[:2] == '__']
return methods
def a_method_1(self):
""" OVERRIDEN """
return True
if __name__ == "__main__":
B_obj = B()
print(B_obj.get_methods())
返回:
>>> ['a_method_1', 'a_method_2', 'b_method_1', 'get_methods']
我想要:
>>> ['a_method_1', 'b_method_1', 'get_methods']
如何修改get_methods来过滤继承的方法?
祝你今天愉快,谢谢。
使用变量:
>>> vars(B)
mappingproxy({'__doc__': None,
'__module__': '__main__',
'a_method_1': <function __main__.B.a_method_1>,
'b_method_1': <function __main__.B.b_method_1>,
'get_methods': <function __main__.B.get_methods>})
>>> import inspect
>>> [name for name, attr in vars(B).items() if inspect.isfunction(attr)]
['b_method_1', 'get_methods', 'a_method_1']
我有以下类(请注意,方法是静态的): 当我打电话的时候: 我想得到输出:
问题内容: 我有两个课,和。它们看起来像这样: 此错误指向Field的: 我希望首先调用Background init ()。要将“ a,b”传递给Fields的 init (),Field会分配a和b,然后将其中包含三个0的列表分配给field。然后让Background的 init ()继续,然后调用它自己的buildField()并用包含c的列表覆盖self.field。 似乎我还没有完全理
本文向大家介绍JavaScript类的继承方法小结【组合继承分析】,包括了JavaScript类的继承方法小结【组合继承分析】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript类的继承方法。分享给大家供大家参考,具体如下: 在JavaScript 里,被继承的函数称为超类型(父类,基类也行,其他语言叫法),继承的函数称为子类型(子类,派生类)。继承也有之前问题,比如字面量
我对遗传的理解是相当基础的。
超类 子类
我想知道如何获取一个方法的返回值,并在直接跟随它的另一个方法中使用它。例如,假设我这样做了: 在这里,我想使用乘法方法中的4作为一个值,然后使用加法方法将我给它的任何值加到乘法结果4上。 注意:我知道我可以做到: 但是我想知道如何使用这种格式。 我想完成的是: 当我运行它时,输出将是 9,因为 2 * 2 = 4 5 = 9。请向我解释一下:)