|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在跟一个练习,可能铺垫过长。。。大概就是类的继承问题。
- 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[0])
- 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...")
- elif 0.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了?
|
|