处理Python的类对象。为什么我的Main()在给定位置参数时返回错误?

2024-05-16 04:59:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我在为学校做额外的学分分配。以下是说明:

创建狗的“类”:

  • 状态(属性)

    • color=“黄色”
    • 支腿=4
  • 动作(方法):

    • Bark()–将获取一个字符串参数并打印输出,后跟“Ruff Ruff”

在主代码上,创建两个对象:SpotBarney

当您在主代码中调用它时,它将给出以下结果:

Spot = Dog()
Spot.bark("I'm Spot")

I'm Spot : Ruff Ruff

print(Spot.color)

yellow

Barney = Dog()
Barney.bark("Grrrrr")

Grrrrr : Ruff Ruff*

所以我完成了这个程序,但是当我把我的两个参数放入“Main()”函数时,它说“Spot未定义”。我真的想不出应该在哪里或者为什么定义它。我一切都好吗?任何帮助都将不胜感激

这是我的代码:

class Dog:

    def _init_ (self, dog_name, color, legs):
        self.dog_name = dog_name
        self.color = yellow
        self.legs= 4

    def set_name(self, dog_name):
        self.dog_name = dog_name 

    def get_name (self):
        return self.dog_name

    def color (self):
        return self.color

    def legs(self):
        return legs

    def Bark(string):
        print(str(string) + " : " + "Ruff Ruff")

def Main (dog1, dog2):
    dog1 = Dog()
    dog2 = Dog()
    dog1.bark("I'm Spot")
    print(dog1.color)
    dog2.bark("Grrrrr")

Main(Spot, Barney)

Tags: 代码nameselfdefcolorprintdogspot
1条回答
网友
1楼 · 发布于 2024-05-16 04:59:23

这里有很多小问题需要解决。首先,确保_init_写为__init__。第二,为colorlegs提供默认参数,而不是在self.color = 'yellow'中对它们进行硬编码

bark方法在一个地方大写,但在其他地方不大写-保持一致。同样在bark方法中,传入self以使其保持Dog方法

最后,也是最重要的一点,主要方法需要大修Main(Spot, Barney)SpotBarney中传递,这两个变量都是未定义的变量。但是,即使定义了它们,main方法也会覆盖它所接受的参数:

def Main (dog1, dog2):
  dog1 = Dog()
  dog2 = Dog()

在这里,不要向main方法传递任何参数。相反,将SpotBarney定义为Main()Dog的实例。最后的代码应该是这样的:

class Dog:

  def __init__(self, dog_name, color="yellow", legs=4):
    self.dog_name = dog_name
    self.color = color
    self.legs = legs

  def set_name(self, dog_name):
    self.dog_name = dog_name 

  def get_name(self):
    return self.dog_name

  def color(self):
    return self.color

  def legs(self):
    return legs

  def bark(self, string):
    print(str(string) + " : " + "Ruff Ruff")

def Main():
  Spot = Dog("Spot")
  Barney = Dog("Barney")
  Spot.bark("I'm Spot")
  print(Spot.color)
  Barney.bark("Grrrrr")

Main()

相关问题 更多 >