同ディレクトリ上に3つのファイルがある。
test.py
import sys
class Aiueo(object):
def common(self):
print(1)
print(2)
print(3)
def func_a(self):
print(4)
self.common()
def func_b(self):
print(5)
self.common()
test_a.py
import test
test.Aiueo().func_a()
test_b.py
import test
test.Aiueo().func_b()
test_a.pyを実行すれば4123と打たれ、
test_b.pyを実行すれば5123と打たれる。
これが現在の仕様。
ところが後になって仕様変更があり、
4123、5123ではなく、4123、513と打つように変更する必要が出てきた。
ただし、チームの決めでinspectのimportはできない。
また、現実はこんな単純なprint文ではなく、
もっと複雑に組み込まれているので共通関数を崩すのも億劫。
まぁフラグ用の引数を渡してあげればいいだけの話なんだけど、
それ以外でもなんとかならないかちょっと調べてみた。
結論
sysはimport済みだったので、正体不明のアトリビュート(???)を使ってなんとかなった。
if 'func_a' in str(sys.modules):
まだまだ勉強が足りない。