Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将方法从Python类导入另一个类实例_Python_Class_Inheritance - Fatal编程技术网

将方法从Python类导入另一个类实例

将方法从Python类导入另一个类实例,python,class,inheritance,Python,Class,Inheritance,假设我有一个python对象A,它是类A的一个实例。类A的每个实例都有一个属性子类型 我还有SubType_B、SubType_C和SubType_D,每个类都有一个名为Inget()的方法。ingest()方法以前使用(self)获取它所需的所有参数,但是self现在是类A的实例 从子类型类(例如子类型_a)继承/使用方法ingest(),使用对象a的self,最优雅的方法是什么 以前,在类A中定义了inset()方法,但我想将其分解为不同的类。类A被实例化,并且基于子类型参数,该对象将从相应

假设我有一个python对象
A
,它是类
A
的一个实例。类
A
的每个实例都有一个属性
子类型

我还有
SubType_B
SubType_C
SubType_D
,每个类都有一个名为
Inget()的方法。
ingest()
方法以前使用
(self)
获取它所需的所有参数,但是
self
现在是类
A
的实例

子类型
类(例如
子类型_a
)继承/使用方法
ingest()
,使用对象
a
self
,最优雅的方法是什么

以前,在类
A
中定义了
inset()
方法,但我想将其分解为不同的类。类
A
被实例化,并且基于
子类型
参数,该对象将从相应的
子类型
类继承正确的
摄取()
方法

简单地说,我希望一个对象从另一个对象获取一个方法,就好像它是自己的一样。

更新 最终的解决方案是生成一个工厂函数,返回
子类型
类的实例。此工厂读取传递给它的参数中的信息,这些参数确定要实例化的
子类型。
子类型
类都扩展了
A类

我曾经向后设想过,认为我从最一般的类开始,然后合并了子类中的属性和方法。这个类似工厂的函数进行必要的信息收集,然后实例化适当的子类


感谢@HenryGomersall和@IgnacioVazquez Abrams的想法和澄清。

保持良好的关系-创建一个新的控制类,根据需要将
a
的实例传递给
子类型的实例
,并从
a
中删除
子类型
属性。也就是说,新类将有一个
A
实例和一个
子类型
实例,这是它应该处理的。@HenryGomersall,一个控制类是一个好主意,谢谢,我们将对此进行研究。@IgnacioVazquez Abrams,你是对的,不是。这个问题也许定义得太松散了,不是说我的最终目标,而是说如何完成一些构思不周的事情。正如在其他评论中所建议的,控制类的想法,尽管不连贯,但直觉上理解了我的意图。感谢XY问题链接,记住这一点很好。为什么不创建一个元类,它将返回一个基于子类类型的具有正确摄取方法的类呢?这个元类可以直接访问您的任何子类库,并且可以在它的新方法中做出决定。