【前戏很长的弱鸡提问】print()不太懂了
本帖最后由 xiaofan1228 于 2020-3-19 10:18 编辑在跟一个练习,可能前戏铺点过长。。。大概就是类的继承问题。
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了?
页:
[1]