我在Python中的函數中創建一個對象。當函數結束時,所有對象的引用都應該被刪除(只有一個實例),以及對象本身。當函數被調用兩次時,Python不會創建另一個對象
所以在這個例子中。
〜/ my_soft/my_program.py
from my_soft.my_module import deployers as D
def main():
while True:
## ask and wait for user option
if opt == 'something':
D.my_function()
〜/ my_soft/my_module/deployers.py
from my_soft.my_module import Deployer
def my_function():
dep = Deployer(param1, param2)
dep.do_something()
return
〜/ my_soft/my_module/__ init__.py
class Deployer(object):
def __init__(self, param1, param2):
## initialise my attributes
def do_something(self):
# method code
現在,當我執行程序並首次選擇'something'時,它會調用my_function並在變量dep中創建對象Deployer。當函數返回時,該對象應該被刪除。當我第二次輸入選項'something'時,python再次調用my_function,同時它應該初始化另一個對象Deployer。 (即再次調用my_function時,它不會創建另一個對象,但它會像以前一樣使用它)。兩者的內存位置相同,因此它們是同一個對象。
這是正常行爲嗎?我錯在哪裏?
@ Atem18嘗試引進一些變化到第一對象,但不是第二個,看是肯定的,如果他們真的一樣。 –
@ivan_pozdeev這是不可能的;測試永遠不會在函數調用中保留該對象。這就是爲什麼這種ID的回收發生。 – Marcin