Python中特定于对象的方法?

Python中特定于对象的方法?,python,methods,Python,Methods,如果已经回答了,我很抱歉,但我已经到处搜索,似乎找不到答案。比如说我有一只班犬。该类有两个对象,Buster和Bowser。创建特定于每个对象的方法的最佳方法是什么 例如,如果我想创建roll_over()和play_dead()方法,只有Buster能做到,stand()和high_five()方法只有Bowser能做到,那么有什么好方法 此外(这可能是它自己的问题),我如何给这些方法提供用户可读的名称,以便如果他们使用Buster,他们可以看到让他“翻身”或“装死”,等等Bowser的选项

如果已经回答了,我很抱歉,但我已经到处搜索,似乎找不到答案。比如说我有一只班犬。该类有两个对象,Buster和Bowser。创建特定于每个对象的方法的最佳方法是什么

例如,如果我想创建roll_over()和play_dead()方法,只有Buster能做到,stand()和high_five()方法只有Bowser能做到,那么有什么好方法

此外(这可能是它自己的问题),我如何给这些方法提供用户可读的名称,以便如果他们使用Buster,他们可以看到让他“翻身”或“装死”,等等Bowser的选项


谢谢。

您创建了一个dog类,然后创建了继承自
父类的新类

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
)都从中继承。它们获得了
“父级”
的所有功能,但可以添加自己的独立功能。这就是你容易做到的

您可以使用
Buster=Buster()
Bowser=Bowser
创建新的
Buster
Bowser
对象


如果您还有其他问题,请在下面提问。祝你好运

这个问题有点做作,所以很难说我将如何在现实生活中实现它。(这些狗不太可能出现在商业场景中)

在这里,我们考虑到了这样一个事实:有狗,也有翻滚的东西。它们重叠,但可能有翻滚的东西不是狗,正如可能有不翻滚的东西是狗一样。在某些编程语言中,这被称为特征,但在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!')

当然,您可以通过将方法定义为函数并分配它们来创建特定于单个对象的方法。类似于
buster=Dog();def翻滚(自我):打印“翻滚!”;buster.roll_over=roll_over
(在
后面加上换行符)。这就是你要找的吗?我想分配部分是我不熟悉的。你能解释一下buster.roll\u over=roll\u over
行是如何工作的吗?当然我还处于学习阶段,但我觉得这有点奇怪。因此,我的对象必须是
buster=buster(…)
,等等。这是一件常见的事情吗?或者这是我正在处理的一种奇怪的情况?是的,这是很常见的。当您需要两个或多个需要稍微不同的相似类时,您将使用此方法。这使得你可以写更少的代码。好的,很好。非常感谢您的帮助和解释。