我有2個模塊A和B. 模塊A沒有內部和模塊B有一個函數'f' 我想分配函數'f'給模塊A,但我想覆蓋此功能全局變量,因爲我想讓這個函數使用A模塊變量。更改功能模塊
但是我遇到了一些問題。這個簡單的代碼:
print A
print B
print '---'
from copy import deepcopy
setattr(A, 'f', deepcopy(B.f))
A.f.__module__ = A
A.f.__globals__['__name__'] = 'A'
print A
print B
我已經得到了以下結果:
<module 'A' from '<path>/A/__init__.pyc'>
<module 'B' from '<path>/B/__init__.pyc'>
---
<module 'A' from '<path>/A/__init__.pyc'>
<module 'A' from '<path>/B/__init__.pyc'>
爲什麼當我只改變的功能之一全局關鍵模塊的名稱變化,哪能阻止它?
爲什麼不把它放在首位呢? – delnan
這是可怕的哈克。你想達到什麼目的? –
我試圖實現一些非常簡單的事情 - 我有2個模塊A和B.A有變量x ='A',B有變量x ='B'。附加B模塊獲得函數'f',打印'self.x'。我希望能夠將該函數'注入'到模塊A中,但是在調用Af()之後,我想得到'A'(因爲這個函數會在A中)。 – Pytor