内容简介:翻译自:https://stackoverflow.com/questions/25062114/calling-child-class-method-from-parent-class-file-in-python
parent.py:
class A(object): def methodA(self): print("in methodA")
child.py
from parent import A class B(A): def methodb(self): print("am in methodb")
无论如何在parent.py中调用methodb()?
只有当A是一个抽象基类时,这样做才有意义,这意味着A只是用作其他类的基础,而不是直接实例化.如果是这种情况,您将在类A上定义methodB,但保持未实现:
class A(object): def methodA(self): print("in methodA") def methodB(self): raise NotImplementedError("Must override methodB") from parent import A class B(A): def methodB(self): print("am in methodB")
这不是绝对必要的.如果你没有在A中的任何地方声明methodB并实例化B,你仍然可以从methodA的主体调用methodB,但这是一个不好的做法;不清楚methodA应该来自哪里,或者子类需要覆盖它.
如果您想更正式,可以使用Python
abc
模块将A声明为抽象基类.
from abc import ABCMeta, abstractmethod class A(object): __metaclass__ = ABCMeta def methodA(self): print("in methodA") @abstractmethod def methodB(self): raise NotImplementedError("Must override methodB")
使用它实际上会阻止您在不重写methodB的情况下实例化A或任何继承自A的类.例如,如果B看起来像这样:
class B(A): pass
尝试实例化它时会出错:
Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: Can't instantiate abstract class B with abstract methods methodB
如果您尝试实例化A,也会发生同样的情况.
翻译自:https://stackoverflow.com/questions/25062114/calling-child-class-method-from-parent-class-file-in-python
以上所述就是小编给大家介绍的《从python中的父类文件调用子类方法》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- golang 父类调用子类方法、继承多态的实现方式
- python – 如何子类化大pandasDataFrame?
- 父类返回子类类型的函数写法
- ios – 在哪里为子类的uitableviewcell创建自动布局约束?
- C#中子类对基类方法的继承、重写和隐藏
- 如何用 SQL 中的循环查询无限级分类的所有子类
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
大连接
[美] 尼古拉斯•克里斯塔基斯(Nicholas A. Christakis)、[美] 詹姆斯•富勒(James H. Fowler) / 简学 / 中国人民大学出版社 / 2013-1 / 59.90元
[内容简介] 1. 本书是继《六度分隔》之后,社会科学领域最重要的作品。作者发现:相距三度之内是强连接,强连接可以引发行为;相聚超过三度是弱连接,弱连接只能传递信息。 2. 本书讲述了社会网络是如何形成的以及对人类现实行为的影响,如对人类的情绪、亲密关系、健康、经济的运行和政治的影响等,并特别指出,三度影响力(即朋友的朋友的朋友也能影响到你)是社会化网络的强连接原则,决定着社会化网络的......一起来看看 《大连接》 这本书的介绍吧!