我想创建一个对象来保存并在其自身内创建不同的对象。 我有一个外部类和内部类,如下所示:
class Outer:
def __init__(self, name):
self.name = name
def sayHello(self):
print "Hello " + self.name
class Inner1:
def __init__(self, name):
self.name = name
class Inner2(Inner1):
pass
class Inner3(Inner1):
pass
new = outer("new")
然后需要对inner2或inner3的对象进行新的...
我用new.inner2()
试了一下
但我得不到我想要的结果。
有什么提示吗?
答案 0 :(得分:2)
以下是嵌套类和嵌套实例化的方法。当您重新嵌入类时,您只需嵌入类型。您必须在self.__init__
(如果您尝试在所有外部实例之间共享全局内部实例,请更新您的问题。)
class Outer(object):
class Inner1(object):
pass
class Inner2(Inner1):
pass
class Inner3(Inner2):
pass
def __init__(self):
self.inner1 = Outer.Inner1()
self.inner2 = Outer.Inner2()
self.inner3 = Outer.Inner3()
outer = Outer()
print outer.inner1
print outer.inner2
print outer.inner3
请注意,您不必为此实际使用嵌套类 - 您的类可以在类之外定义,有时更喜欢更简单和更Pythonic:
class Inner1(object):
pass
class Inner2(Inner1):
pass
class Inner3(Inner2):
pass
class Outer(object):
def __init__(self):
self.inner1 = Inner1()
self.inner2 = Inner2()
self.inner3 = Inner3()
outer = Outer()
print outer.inner1
print outer.inner2
print outer.inner3
有时你也会看到......的模式。
class Inner1(object):
pass
class Outer(object):
Inner1 = Inner1
制作一个方便的"引用类中的类。这通常与类可能抛出的自定义异常一起使用。
答案 1 :(得分:2)
老实说,内部课程通常不是一个好主意,特别是如果你在"包含"之外实例化它们。类。
但是要回答你的问题,基本上内部类只是在不同的范围内声明,所以你需要引用它所在的范围。
[routerLink]=""