我在Base模塊中建立了一個類:class Base(object): def do_something(self): pass在main文件中,我這么做:import Baseclass Sub(Base.Base):
pass在Base類中,do_something()是需要訪問main的命名空間的。也就是說Base類不會被實例化,但是會從別的地方(main中)繼承Base.Base,然而繼承而來的do_something()命名空間不是main的。我想保持main文件的整潔,該如何修改Base文件來使繼承下來的方法do_somgthing能訪問main的命名空間?
2 回答

HUX布斯
TA貢獻1876條經驗 獲得超6個贊
沒有簡單的辦法讓定義在模塊中的代碼直接使用調用這個模塊的代碼模塊的全局變量。
你可以或者:
將要用到的全局變量作為 do_something 的參數傳入。
或者:
定義一個可 import 的模塊,比如 _g.py。整個程序所有需要以全局的方式存取的數據都放在 _g 中。

忽然笑
TA貢獻1806條經驗 獲得超5個贊
我覺得思路不對,應該從OOP的角度思考。
作為一個單一職責的Base類,他怎么會去關心調用他的類的東西呢?
解決方案也很簡單,Base類既然在解決一些問題(do_something),而要解決這些問題,需要一些支持(用你的話說是從main中獲取信息),那么main在調用do_something的時候就應該將需要的參數傳給他。
具體實現方法:
方法一:在main的構造函數中將參數傳遞給base;
方法二: 在main中需要調用do_something的地方傳遞需要的參數給他。
添加回答
舉報
0/150
提交
取消