假设我在函数A中创建了一个类对象someClassObject,并将该对象抛出到函数B中:
functionB(someClassObject)
如何保留我在函数B中对someClassObject所做的所有修改,这样如果我的函数B不能返回任何东西,我可以继续在函数A中使用someClassObject?
我的函数B是一个递归函数,我无法想到让它返回我的someClassObject
答案 0 :(得分:0)
我非常确定在创建课程时默认情况下会发生这种情况:
Type "help", "copyright", "credits" or "license" for more information.
>>> class A:
... def __init__(self, x):
... self.x = x
...
>>> def modA(objA):
... objA.x = 9
...
>>> def createA():
... a = A(2)
... print(a.x)
... modA(a)
... print(a.x)
...
>>> createA
<function createA at 0x7ff7acee2a60>
>>> createA()
2
9
答案 1 :(得分:0)
如果您传递一个类对象(通常是任何对象),它会保留一个对象,因此对它的所有引用都可以看到对它的所有更改。
例如在
中def B(cls):
cls.value=2
def A():
class C(object):
value=1
B(C)
return C.value
A()返回2
答案 2 :(得分:0)
我认为你的意思是一个类的实例,当你意味着类对象时,在Python中,即使一个类是一个对象,你也可以像实例一样传递它们。 在Python中,所有对象都通过引用传递,这意味着当您将实例传递给函数时,您只传递引用,并且将保留对该对象所做的所有更改。
如果你的意思是一个类的实例而不是例子:
class Foo():
def __init__(self):
self.x = 1
def functionB(foo):
foo.x += 1
if foo.x < 10:
functionB(foo)
def functionA():
some_instance_of_Foo = Foo()
functionB(some_instance_of_Foo)
print(some_instance_of_Foo.x)
if __name__ == "__main__":
functionA() # 10