扩展超类,在Python中调用子类

眼电的

我是编写OO程序的新手,但是我找不到解决所面临问题的任何好方法。谁能帮忙吗?

我正在采购一些无法自由修改的模块,并且我想在超类上添加一个方法,以便可以调用子类的实例。所以在我的模块中:

import externalLib as myLib

class Superclass(myLib.Superclass):

    def myNewMethod(self):
        print(self.name)   # Print a member variable

def __main__():

    obj = myLib.Subclass(args)
    obj.myNewMethod()    # Expect prints the same member variable in subclass

结果:“子类”没有名为“ myNewMethod”的属性或方法。

  1. 我无法扩展所有子类,因为子类太多。

  2. 我可以通过在模块下而不是在超类下定义函数来解决问题,但是我只是认为这种方式不像OO架构。

有更好的解决方案吗?还是我可以引用任何关键字或OO设计概念?

谢谢!

菲利普·马尔恰克(Filip Malczak)

是的,只有一个关键字-“错误”。OO是模型,不应做您想做的事情。

如果您确实有充分的理由,则可以更简单地做到这一点:

import externalLib as myLib

def myNewMethod(self):
    print(self.name)

myLib.Superclass.myNewMethod = myNewMethod

为什么您的代码不起作用?

当您定义从myLib.Superclass继承的Superclass时,它仅保留在此模块中。当您定义超类时,名称“超类”仅在全局范围内与新类绑定,但旧值没有改变,myLib / externalLib范围内的co超类保持不变。我可以看到,如果您使用Java或C ++之类的经典OO语言,您会感觉到它可能会起作用。

鲜为人知的事实-Java / C ++ OO模型并不是真正的面向对象。它确实具有这种印象,但是OOP模型实际上是在Smalltalk中实现的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何让子类扩展python中超类的方法

来自分类Dev

在调用方法时获取扩展超类的子类实例

来自分类Dev

在调用方法时获取扩展超类的子类实例

来自分类Dev

从超类函数中的对应子类快速调用类函数

来自分类Dev

当子类调用超类的方法时,如何获得超类来引用子类中的属性?

来自分类Dev

Python-如何从子类实例调用超类的方法?

来自分类Dev

超类引用无法在Java中调用子类方法

来自分类Dev

Swift:在子类中覆盖==仅在超类中导致==的调用

来自分类Dev

如何在Java中从超类调用子类方法?

来自分类Dev

从Java中的子类构造函数调用超类

来自分类Dev

在向量C ++中从超类调用子类方法

来自分类Dev

您如何在Java中从超类调用子类方法?

来自分类Dev

从超类对象数组中调用子类方法

来自分类Dev

从超类调用子类中的相似命名函数

来自分类Dev

从 Java 中超类类型的 ArrayList 调用子类方法

来自分类Dev

当子类对象存储在超类数组中时,如何调用子类方法?

来自分类Dev

从子类调用超类的方法

来自分类Dev

NSNotificationCenter从超类还是子类调用方法?

来自分类Dev

Java超类调用子类方法

来自分类Dev

从子类调用超类构造函数

来自分类Dev

从超类调用子类方法-设计模式

来自分类Dev

NSNotificationCenter从超类或子类调用方法?

来自分类Dev

子类调用超类构造函数

来自分类Dev

从子类调用函数的超类

来自分类Dev

实例化超类的python中的子类化

来自分类Dev

如何扩展超类并在超类构造函数参数中调用方法或惰性val

来自分类Dev

在超类中实现宏,并在子类中对其进行扩展

来自分类Dev

如果我在Linux服务器上的子类中扩展,则PHP无法加载超类

来自分类Dev

从子类调用基类的扩展方法

Related 相关文章

  1. 1

    如何让子类扩展python中超类的方法

  2. 2

    在调用方法时获取扩展超类的子类实例

  3. 3

    在调用方法时获取扩展超类的子类实例

  4. 4

    从超类函数中的对应子类快速调用类函数

  5. 5

    当子类调用超类的方法时,如何获得超类来引用子类中的属性?

  6. 6

    Python-如何从子类实例调用超类的方法?

  7. 7

    超类引用无法在Java中调用子类方法

  8. 8

    Swift:在子类中覆盖==仅在超类中导致==的调用

  9. 9

    如何在Java中从超类调用子类方法?

  10. 10

    从Java中的子类构造函数调用超类

  11. 11

    在向量C ++中从超类调用子类方法

  12. 12

    您如何在Java中从超类调用子类方法?

  13. 13

    从超类对象数组中调用子类方法

  14. 14

    从超类调用子类中的相似命名函数

  15. 15

    从 Java 中超类类型的 ArrayList 调用子类方法

  16. 16

    当子类对象存储在超类数组中时,如何调用子类方法?

  17. 17

    从子类调用超类的方法

  18. 18

    NSNotificationCenter从超类还是子类调用方法?

  19. 19

    Java超类调用子类方法

  20. 20

    从子类调用超类构造函数

  21. 21

    从超类调用子类方法-设计模式

  22. 22

    NSNotificationCenter从超类或子类调用方法?

  23. 23

    子类调用超类构造函数

  24. 24

    从子类调用函数的超类

  25. 25

    实例化超类的python中的子类化

  26. 26

    如何扩展超类并在超类构造函数参数中调用方法或惰性val

  27. 27

    在超类中实现宏,并在子类中对其进行扩展

  28. 28

    如果我在Linux服务器上的子类中扩展,则PHP无法加载超类

  29. 29

    从子类调用基类的扩展方法

热门标签

归档