例如:
class parent(self):
def __init__(self, i):
self.i = i
def something(self, value):
a = child(value)
return a
class child(parent):
def something_that_is_not_init(self):
return self.i
子类从父类继承init。所以我的问题是,在我的父类中,我可以创建子对象的实例,使用并返回吗?
我会按如下方式执行:
a = parent(2)
b = a.something(3)
b.something_that_is_not_init()
3
编辑了一下问题,更新了代码部分,因为问题不明确。
答案 0 :(得分:0)
是的,它有效,但我不推荐它。它通常被认为是糟糕的OOP编程。此外,您可以将其创建为静态方法,这样您就不必实际实例化父类。
ClassB
答案 1 :(得分:0)
我刚试过你的例子(包括一些缺少的self
)和python3,至少它起作用了:
class Parent():
def __init__(self):
pass
def something(self):
a = child()
return a
class Child(parent):
def something_that_is_not_init(self):
print('yes, you got me')
并调用something
方法:
print(parent().something().__class__.__name__)
# Child
parent().something().something_that_is_not_init()
# yes, you got me
但也许这不是很好的设计。考虑工厂或使用__new__
。但是既然你明确表示你想要这样的东西:它有效,即使我觉得有点破坏写它: - )