我有一个Pet
类,我需要定义两个类Cat
和Dog
,Cat
类继承自Pet
和{{ 1}}类需要与Dog
一起使用,这将打印eat_cat()
。这是给定的代码:
dog_name has eaten cat_name
答案 0 :(得分:0)
必填项:http://idownvotedbecau.se/noattempt/
首先,欢迎来到SO!在询问之前,您需要先尝试一下,因为我们不在这里做您的工作。
但是,我的心情非常好,因此我只会帮助您了解Pet班级的建立方式,以便您可以尝试一下自己,我会为您提供基本信息,以免让您不完整地列出术语,因为我觉得就像您是编程新手一样。
所以,我们开始吧:
class Pet:
"""
Pretty straight forward, you create a new class named "Pet", it inherits nothing
(10secs of web searching will tell you how to inherit in python).
"""
def __init__(self, name, eats):
"""
This method is called a magic method and is called whenever you create an object
A.K.A when you do x = Pet("Cortex", "Cheese")
"""
# Here you define the properties of your object, your pet will have
# a name and what it eats.
self.name = name
self.eats = eats
为了简便起见,我没有在代码块中放置很多信息。
__ init__魔术方法
当您调用(创建)一个类对象(此处为Pet)时,该方法将被自动调用并执行。
自我关键字
self
将成为您实现的每个类方法的第一个参数,它表示该类的当前实例。
自我与其他事物之间的点
好吧,这就是您访问Python对象中内容的方式。
如果您的计算机上安装了IPython,建议您打开它,因为它可以帮助您了解对象内部的内容。
class MyClass():
def __init__(self):
self.variable1 = "foo"
self.variable2 = "bar"
self._variable3 = "baz"
def get_variable3(self):
return self._variable3
如果没有IPython,请参见以下屏幕截图:
在点后按Tab键后,您可以看到对象内部的内容。您可以看到variable1
,variable2
和方法get_variable3
。
a = MyClass()
a.variable1 # will return "foo"
a.variable2 # will return "bar"
a.get_variable3() # will return "baz"
如果您想知道为什么看不到_variable3
是因为我在其名称前添加了_
并将其隐藏,这就是为什么我创建了一种查看它的方法。
我知道我说过我不会帮助您继承遗产,但我仍然在这里。
超短说明:
继承是从父类中获取所有内容,并将其放入子类中。
如果我参加之前创建的课程:
class MyChildClass(MyClass):
"""
This is how you specify inheritance, just put the parent class in the brackets
"""
pass # the keyword for "do literally nothing"
然后,如果您创建此类的实例并查看其中的内容:
是的,这是相同的,父类(MyClass)中的所有内容都放在子类中。
但是,这是没有用的。问题是您可以在子类中定义特定于其的方法:
在这里,我在子类中定义了两个方法。您可以看到我重新定义了get_variable3
来返回variable1
(无论出于何种原因),这意味着MyChildClass对象在调用此方法时将返回“ foo”(variable1
中的值),而MyClass对象将返回“ baz”。
我还创建了一个全新的方法,该方法仅存在于MyChildClass中,而不存在于MyClass中。
在您的代码中提到dog.eat_cat(cat)
,从现在起您将了解到,这是dog
对象内部的一个带有参数的方法。
我不是最擅长于解释事物,所以我希望这可以帮助您至少掌握基础知识。