xiaofan1228 发表于 2020-3-18 17:45:31

【零基础向】print()不太懂了

在跟一个练习,可能铺垫过长。。。大概就是类的继承问题。

import random as r

class Animal():
    def __init__(self, age):
      self.age = age

    def get_age(self):
      return self.age

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

    def get_name(self):
      try:
            return self.name
      except:
            print("Set name first!")

    def __str__(self):
      return self.name + "age:" + str(self.age)

    __repr__ = __str__

class Cat(Animal):
    def speak(self):
      print("~meow~")
      
    def __str__(self):
      try:
            return self.name + " is a " + str(self.age) + "-years old cat!"
      except:
            return "A meow has no name yet!"
   
    __repr__ = __str__


class Human(Animal):
    def __init__(self, name, age):
      self.name = name
      self.age = age
      self.friends = []

    def get_friends(self):
      return self.friends

    def add_friends(self, other):
      if other.name not in self.friends:
            self.friends.append(other.name)
    def speak(self):
      print("Hello world! %s" %self.friends)

    def age_diff(self, other):
      diff = abs(self.age - other.age)
      print("They have",diff,"years difference.")

    def __str__(self):
      return "Human " + self.name + "age:" + str(self.age) + " have friends " + str(self.friends)

    __repr__ = __str__


class Student(Human):
    def __init__(self, name, age, major = None):
         self.name = name
         self.age = age
         self.major = major

    def change_major(self, major):
      self.major = major
      return self.major

    def speak(self):
      R = r.random()
      if R < 0.25:
            print("Zzzzz...")
      elif0.25 <= R < 0.5:
            print("I hunger...")
      elif 0.5 <= R < 0.75:
            print("Maybe I need to study...")
      else:
            print("Go jerk it out!!!")

    def __str__(self):
      return "Student : " + self.name + " age : " + str(self.age) + "==>Major : " + str(self.major)

    __repr__ = __str__


好的,我开始run了,此时输入
>>> a = Student("Jimmy",666, "PreMED")
>>> a
Student : Jimmy age : 666==>Major : PreMED
>>> print(a.get_name(), "say:", a.speak())
I hunger...
Jimmy say: None

问题在print()内,应该是调用了speak(),因为输出了speak的内容,但是为什么没有按照格式输出?而且还None了?

xiaofan1228 发表于 2020-3-18 17:47:04

突然明白了 ,应该在 speak()里用 return,不应该用print...

不过还是等大神解读一下吧

qiuyouzhi 发表于 2020-3-18 17:47:49

a.speak没有返回值啊

°蓝鲤歌蓝 发表于 2020-3-18 17:50:03

楼上说的是对的,别等大神了,自信点。

蒋博文 发表于 2020-3-18 17:51:04

自信一点,你的理解很对哦

蒋博文 发表于 2020-3-18 17:52:16

要相信自己,要像zltzlt或者是一个账 号一样,是吧?@一个账号

xiaofan1228 发表于 2020-3-18 18:02:50

感谢大家!!!

zltzlt 发表于 2020-3-18 18:11:03

蒋博文 发表于 2020-3-18 17:52
要相信自己,要像zltzlt或者是一个账 号一样,是吧?@一个账号

一个账号 发表于 2020-3-18 18:50:21

蒋博文 发表于 2020-3-18 17:52
要相信自己,要像zltzlt或者是一个账 号一样,是吧?@一个账号

??

蒋博文 发表于 2020-3-18 22:59:25

一个账号 发表于 2020-3-18 18:50
??

我的意思是要向你学习你那相信自己的精神,对不?{:10_256:}{:10_256:}{:10_256:}

蒋博文 发表于 2020-3-18 23:00:07

zltzlt 发表于 2020-3-18 18:11


{:10_256:}{:10_256:}{:10_256:}我的意思是要向你学习你那相信自己的精神,对不?{:10_256:}{:10_256:}{:10_256:}
页: [1]
查看完整版本: 【零基础向】print()不太懂了