Python 3中是否可以存储一个类的实例多次用于另一个类的方法中?我有这样的课程...
class ObjectOne:
def __init__(self):
#initializes multiple different instances of ObjectTwo
self.ObjectTwoInstance = ObjectTwo(...)
def print_output(self):
#prints some output from initialized objects
class ObjectTwo:
def __init__(self):
#some initialization
def change_object(self):
"""Changes some state of an ObjectTwo Instance"""
#creates a new instance of ObjectOne, and overrides
#the default ObjectOne instance's initialization of
#ObjectTwo. (I want to be able to refer back to this
#new instance of ObjectOne, and change that instead
#of changing another default ObjectOne object)
我的问题来自ObjectTwo中的change_object方法。可能有更好的方法来执行此操作,但是从本质上讲,我希望能够保存ObjectOne的更新后的新实例,以便下次我调用change_object时可以引用该新实例,并更改该实例而不是基础实例。初始化的ObjectOne实例。
在当前情况下,每当我尝试调用change_object时,它将在新的ObjectOne实例中更改ObjectTwo的init,但仅更新ObjectOne的默认初始化,因为change_object不知道上一次我更新的ObjectOne实例的情况。叫它。 (我正努力避免混淆,但这是我能够解释的最好方法)
如果有更简便的方法可以执行此操作,或者我需要重组代码?无论哪种情况,我都不确定该如何处理。
(编辑:更改了ObjectOne的__init__
,以使我的问题更清楚)
答案 0 :(得分:1)
我不确定您要做什么,但似乎肯定有更好的方法来做到这一点...
假设我正确理解了您-您正在尝试为res
的每个实例创建经过修改的ObjectOne
的单独实例,然后在{{ 1}},我建议在ObjectTwo
内创建change_object
的修改后的实例:
ObjectOne
我还建议考虑定义一个新类,例如ObjectOne
,它继承了__init__
;此类将在class ObjectTwo:
def __init__(self):
self.ObjectOneInstance = ObjectOne()
# override the default ObjectOne's initialization of ObjectTwo,
# however you did it originally in change_object
# some other initialization
def change_object(self):
# change some state of the ObjectTwo instance
# perform operation on self.ObjectOneInstance
中使用,而不是ObjectOneModified
,并且您可以修改其ObjectOne
,而不会影响ObjectTwo
的原始(默认)定义。
答案 1 :(得分:0)
我最终通过将ObjectOne
的{{1}}传递到ObjectTwo
到ObjectTwo
来解决问题,就像这样:
__init__
这类似于ViAik的建议,但不涉及创建新类或初始化全新实例。