[英]Python how to make class object shared across functions
可以說我在函數A中創建了一個類對象someClassObject,並將該對象放入函數B中:
functionB(someClassObject)
如何保留在函數B中對someClassObject所做的所有修改,以便在函數B無法返回任何內容的情況下繼續在函數A中使用someClassObject?
我的函數B是一個遞歸函數,無論如何我都想不起來讓它返回我的someClassObject
我很確定在創建類時默認會發生這種情況:
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
如果傳遞一個類對象(通常是任何對象),則該對象將保留一個對象,因此對該對象的所有引用都可以看到其所有更改。
例如在
def B(cls):
cls.value=2
def A():
class C(object):
value=1
B(C)
return C.value
A()返回2
我假設您是指類的實例,而您是指類對象,在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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.