How to get the name of the instance of the parent class from the derived class in Python?
嗨,我想从继承的子类中获取基类的实例名。
为Ex.
1 2 3 4 5 6 7 8 9 10 11 12 13 | class Foo(): def __init__(self, fakeArg): self.a = fakeArg class Bar(Foo): def __init__(self, fakeArg1): Foo.__init__(self) self.b = fakeArg1 # say, i store parent(Foo) instance in an variable too self.c = f f = Foo('Hello') b = Bar('Bar') |
现在我想将"f"附加到"b",这样如果我将类栏实例化为b,它还应该存储父类的哪个实例正在调用派生类实例。
一种方法是将父类(foo)实例"f"解析为类(bar)的"_init_uuu"方法的参数,但这有点像黑客。
请提供问题的解决方案。
事先谢谢。
听起来您可能对继承在Python中的工作方式感到困惑。在您所显示的代码中,
但是,您的
如果您需要从
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Foo: def __init__(self, a): self.a = a def sayHello(self): print("Hello!") class Bar(Foo): def __init__(self, a, b): super().__init__(self, a) # calls overridden __init__ method from Foo self.b = b def doSomething(self): self.sayHello() # calls a method defined in Foo return self.a + self.b # accesses variable"a" that was set in Foo |
(注意上面的代码是针对Python3的。在python 2中有一些小东西会使它不能正常工作。如果您学习python的原因不是维护传统的python 2应用程序,那么我建议您学习python 3。)
听起来像是一个黑客,你应该怎么做。
记住,每个类可能有大量的实例,因此它无法自动知道哪个实例应该与它"相关"——并且使用任何类型的魔法(例如,检查父堆栈帧中是否有保存
所以,你应该把
如果不需要单独的