类,对象,继承?

时间:2016-09-24 00:35:17

标签: python class object inheritance

我应该创建三个类:父母,孩子1和孩子2 子级1和2应该从Parent类继承。 所以我相信我已经做到了。

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代码也不正确。

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

  

孩子1和2应该从Parent类继承。所以我相信我已经做到了

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

  

我必须编写父对象和子1和2对象,这些对象将打印出各自的字符串

好的......

p = Parent()
child_a = ChildA()

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

然而 - ChildA()无法正常工作,因为__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!

如果是这种情况,您只需将childgreeting更改为greeting即可。然后,从第一个例子

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!

答案 1 :(得分: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)

希望我理解你,因为你的问题似乎没有得到恰当的解释......