在Python中的现有对象中创建对象
我想创建一个对象,它可以容纳和创建不同的对象。 我有一个外部类和内部类,如下所示:在Python中的现有对象中创建对象,python,class,object,inner-classes,Python,Class,Object,Inner Classes,我想创建一个对象,它可以容纳和创建不同的对象。 我有一个外部类和内部类,如下所示: class Outer: def __init__(self, name): self.name = name def sayHello(self): print "Hello " + self.name class Inner1: def __init__(self, name): self.name = nam
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的对象上创建新的。。。
我用新的试过了
但是我没有得到我想要的结果。
有什么提示吗?下面是如何执行嵌套类和嵌套实例化。嵌入类时,只嵌入类型。您必须在self中创建实例 如果您试图在所有外部实例之间共享全局内部实例,请更新您的问题
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
请注意,您不必为此实际使用嵌套类-您的类可以在类之外定义,并且有时更倾向于使用更简单、更具python风格的类:
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
以方便地引用类中的类。这通常用于类可能抛出的自定义异常
关于是否首选嵌套类的不同意见。以下是如何执行嵌套类和嵌套实例化。嵌入类时,只嵌入类型。您必须在self中创建实例 如果您试图在所有外部实例之间共享全局内部实例,请更新您的问题
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
请注意,您不必为此实际使用嵌套类-您的类可以在类之外定义,并且有时更倾向于使用更简单、更具python风格的类:
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
以方便地引用类中的类。这通常用于类可能抛出的自定义异常
关于是否首选嵌套类的不同意见。老实说,内部类通常不是一个好主意,尤其是在包含类之外实例化它们时 但是为了回答您的问题,基本上内部类只是在不同的范围内声明的,所以您需要引用它所在的范围
# Changed to a capitol letter as that is more conventional
class Outer:
name = ""
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
newOuter = Outer("newOuter")
newInner2 = Outer.Inner2("newInner2")
老实说,内部类通常不是一个好主意,尤其是在包含类之外实例化它们时 但是为了回答您的问题,基本上内部类只是在不同的范围内声明的,所以您需要引用它所在的范围
# Changed to a capitol letter as that is more conventional
class Outer:
name = ""
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
newOuter = Outer("newOuter")
newInner2 = Outer.Inner2("newInner2")
1.为什么有嵌套类?2.既然它名为Inner2而不是Inner2,为什么要尝试new.Inner2?这些名称只是示例。我想要一个单独的对象,可以由用户创建,并且该对象应该能够在自身内部创建其他对象。全部由用户提供。因为我想让新对象生成一个新的内部类。我不明白你想实现什么。你能给出一些背景吗;你到底想解决什么问题?Python中很少需要嵌套类,到目前为止,代码中唯一的问题是:1。如果在嵌套子类的主体中没有pass,它在语法上是无效的;二,。键入的类名大小写不正确。是否尝试在全局作用域中实例化Inner1?1。为什么有嵌套类?2.既然它名为Inner2而不是Inner2,为什么要尝试new.Inner2?这些名称只是示例。我想要一个单独的对象,可以由用户创建,并且该对象应该能够在自身内部创建其他对象。全部由用户提供。因为我想让新对象生成一个新的内部类。我不明白你想实现什么。你能给出一些背景吗;你到底想解决什么问题?Python中很少需要嵌套类,到目前为止,代码中唯一的问题是:1。如果在嵌套子类的主体中没有pass,它在语法上是无效的;二,。您键入的类名大小写不正确。您是否试图在全局范围内实例化Inner1?有时这是首选的,但通常应该是首选的@Aarontagart是的,我只是在研究!有时这是首选的,通常这是首选的@Aarontagart是的,我只是在研究!老实说,内部类通常不是一个好主意,特别是当您在包含类之外声明它们时。-这真的是你想说的吗?你是什么意思?我的意思是实例化,而不是声明:老实说,内部类通常不是一个好主意,特别是如果你在包含类之外声明它们的话这真的是你想说的吗?你是什么意思?我的意思是实例化,而不是声明: