【发布时间】:2019-01-13 05:48:56
【问题描述】:
我正在编辑一些由我无法控制的另一个系统调用的代码。这个系统从几个不同的地方初始化我的班级。我需要根据我的班级从哪里调用来执行不同的事情。 有没有办法可以找到我的对象正在初始化的位置?
A.py:
class InitializerA:
def calling_function(self):
Called()
class InitializerB:
def calling_function(self):
Called()
B.py:
class Called:
def __init__(self):
# I want to know here whether it is being called by InitializerA or InitializerB
【问题讨论】:
-
你为什么要那个?在什么情况下会有用?
-
被调用者可以根据谁调用它来做不同的事情。不幸的是,这是一些需要修改的遗留代码,我无法向初始化程序添加新参数。
-
这似乎是一个糟糕的设计,是什么导致的?目前是如何处理的?
-
同意,这并不理想。最初,Called 会对所有 Initializers 做同样的事情,但由于业务需求的变化,它现在需要做不同的事情。
-
您的要求对我来说没有多大意义。如果您正在重构以添加新功能,为什么要限制您可以更改的内容呢?请edit该问题提供更多有用的上下文,这似乎是一个XY问题。
标签: python python-3.x oop