2016-09-24 226 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