2016-09-24 224 views
0

我应该创建三个类:父项,子项1和子项2.
子项1和2应该从父类继承。 所以我相信我已经做到了。类,对象,继承?

class Parent: 
    """Parent Object""" 

    def __init__(self): 
     self.greeting = "Hi I'm a Parent Object!" 


class ChildA(Parent): 

    def __init__(self): 
     childclass.__init__(self) 
     self.childgreeting = "Hi I'm a Child Object!" 


class ChildB(Parent): 
    pass 

现在我必须编写一个父对象和将打印出它们各自字符串的子对象。
这就是我感到困惑的地方:我已经把字符串放在他们的类中作为子对象或父对象。
但是,我如何让他们打印为一个对象?

我已经开始了我这样的代码。

class Parent(object): 

class ChildA(object): 

class ChildB(object): 

如何让这些字符串打印正在扰乱我。
而且我感觉我的ChildA代码不正确。

任何人都可以帮助我吗?

+0

你指的是类的名称作为一个字符串? –

+0

如果'Parent'确实是一个* parent *,那么为什么你有'ChildA'和'ChildB'从'object'继承? –

+0

顺便说一句'childclass .__ init__'将不起作用,因为'childclass'没有定义 –

回答

1

儿童1和2都应该从Parent类继承。所以我相信我已经这样做了

是的,在第一个代码中,您有,但不在第二个代码中。

我必须写一个父对象和子1和2个的对象,这将打印出各自的串

好了...

p = Parent() 
child_a = ChildA() 

print(p.greeting) 
print(child_a.childgreeting) 

然而 - ChildA()亿韩元” t工作,因为__init__应该看起来像这样

class ChildA(Parent): 

    def __init__(self): 
     super().__init__() # This calls the Parent __init__ 
     self.childgreeting = "Hi I'm a Child Object!" 

现在,上面的代码将工作。

但是,我想你想greeting属性被覆盖?否则,你得到这个

print(child_a.greeting) # Hi I'm a Parent Object! 
print(child_a.childgreeting) # Hi I'm a Child Object! 

如果是这样的话,你只需改变childgreetinggreeting。然后,从第一个例子

print(p.greeting) # Hi I'm a Parent Object! 
print(child_a.greeting) # Hi I'm a Child Object! 

我怎么让他们打印为一个对象?

不能完全确定你的意思是什么,但如果你定义__str__返回greeting

class Parent: 
    """Parent Object""" 

    def __init__(self): 
     self.greeting = "Hi I'm a Parent Object!" 

    def __str__(self): 
     return self.greeting 

的例子现在变成

print(p) # Hi I'm a Parent Object! 
print(child_a) # Hi I'm a Child Object! 
+0

是的!这正是我想知道的,精彩地解释。如果我的问题有点含糊,我很抱歉,试图尽可能地把它放在最合适的位置。 – kdkmoment

+0

不用担心。尽可能随时[接受答案](http://stackoverflow.com/help/someone-answers)。 –

0
class Parent(object): 

    def __init__(self): 
     self.greeting = "Hi I am a parent" 
    def __str__(self): 
     return self.greeting 


class Child(Parent): 

    def __init__(self): 
     super(Child, self).__init__() 
     self.greeting = "Hi I am Child" 

    def __str__(self): 
     return self.greeting 


p = Parent() 
print(p) 
c = Child() 
print(c) 

此方法可以帮助您使用'print()'语句打印出单个课程的问候语。但是,如果你想直接得到self.greeting属性,你应该使用

p = Parent() 
print(p.greeting) 

希望我理解你,因为你的问题似乎是不正确的解释...

+0

是的!感谢您的理解!对不起,它有点含糊! – kdkmoment