如果有人回答我道歉,但我到处搜索,似乎无法找到答案。说我有一个班级狗。那个班有两个对象,巴斯特和鲍泽。创建特定于每个对象的方法的最佳方法是什么?
例如,如果我想创建只有Buster可以执行的roll_over()和play_dead()方法,以及只有Bowser可以执行的stand()和high_five()方法,那么这样做的好方法是什么?
另外(这可能需要它自己的问题),我怎么能给这些方法用户可读的名字,这样如果他们使用Buster,他们可以看到让他“翻身”或“玩死”的选项,对Bowser来说等等?
谢谢。
答案 0 :(得分:3)
你创建一个狗类,然后创建继承自"parent"
类的新类。
class Dog():
def __init__(self):
#Put things here that all dogs can do
#...
class Buster(Dog):
def __init__(self):
#...
def roll_over(self):
#...
def play_dead(self):
#...
class Bowser(Dog):
def __init__(self):
#...
def stand(self):
#...
def high_five(self):
#...
基本上,您要创建一个"parent"
类,每个"children"
类(又名Buster
,Bowser
)都会继承。他们获得了"parent"
的所有功能,但可以添加自己独立的功能。这就是你如何轻松地做到这一点。
您可以使用Buster
和Bowser
创建新的buster = Buster()
和bowser = Bowser
个对象。
如果您还有其他问题,请在下面提问。祝你好运!
答案 1 :(得分:0)
问题有点人为,所以很难说我将如何在现实中实现这一点。 (这些狗不太可能出现在商业场景中)。
在这里,我们允许有狗和有东西翻滚的事实。它们是重叠的,但是可能会有一些东西翻过来而不是狗,就像可能有狗不会翻身的东西一样。在某些编程语言中,这将被称为 trait ,但在Python中,它通常用多重继承实现。
class Dog():
'''
Maybe all dogs are created with the potential
to roll over and play dead, but need to be trained!
You can define properties that all dogs have here, or you can leave it
as a "marker" class that just indicates that subclasses are indeed dogs.
'''
class Roller():
'''May not be a dog, but can definitely roll over'''
def roll_over(self):
print('Slow your roll, dawg!')
class NotDeadYet():
'''No you're not, you'll be stone dead in a moment.'''
def play_dead(self):
print("I think I'll go for a walk.")
class Buster(Dog, Roller):
'''I'm a dog and a roller!'''
class Bowser(Dog):
'''Just a dumb dog'''
class Dug(Dog):
def __init__(self):
print('My name is Dug. I have just met you, and I love you.')
def speak(self):
print('SQUIRREL!')