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 + ":" + str(self.age)
__repr__ = __str__
>>> a = Animal(3)
>>> a.get_name()
Set name first!
>>> a.set_name("Jimmy")
>>> a.get_name()
'Jimmy'
>>> a
Jimmy:3
#之所以说Python 不够严谨,是因为可以完全绕过类来通过属性来赋值
>>> a.age = 5
>>> a.get_age()
5
#默认状态下age应该输入int类型,但是在这种状态可以赋值str型,这样会导致程序内部的严重错误
>>> a.age = "Jimmy"
>>> a.get_age()
'Jimmy'
#类的继承
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__
>>> c = Cat(5)
>>> c
A meow has no name yet!
>>> c.get_name()
Set name first!
>>> c.set_name("Tiny")
>>> c
Tiny is a 5-years old cat!
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:
return "Zzzzz..."
elif 0.25 <= R < 0.5:
return "I hunger..."#这里要用return,如果用print()就不能在print(a.speak())中正常显示了
elif 0.5 <= R < 0.75:
return "Maybe I need to study..."
else:
return "Go jerk it out!!!"
def __str__(self):
return "Student : " + self.name + " age : " + str(self.age) + "==>Major : " + str(self.major)
__repr__ = __str__
>>> a = Student("Jimmy",666, "PreMED")
>>> a
Student : Jimmy age : 666==>Major : PreMED
>>> print(a.get_name(), "say:", str(a.speak()))
Jimmy say: Go jerk it out!!!
class Rabbit(Animal):
tag = 1
def __init__(self, age, parent1=None, parent2=None):
Animal.__init__(self, age)
self.parent1 = parent1
self.parent2 = parent2
self.rid = Rabbit.tag
Rabbit.tag += 1
def get_rid(self):
return str(self.rid).zfill(3)
def get_parent1(self):
return self.parent1
def get_parent2(self):
return self.parent2
def __add__(self, other):
return Rabbit(0, self, other)#定义父母和子女关系,同时定义年龄
def __eq__(self, other):
parents_same = self.parent1.rid == other.parent1.rid \
and self.parent2.rid == other.parent2.rid
parents_opposite = self.parent1.rid == other.parent2.rid \
and self.parent2.rid == other.parent1.rid
return parents_same or parents_opposite
def __str__(self):
return "rabbit:" + self.name +" " + self.get_rid()
__repr__ = __str__
r1 = Rabbit(1)
r1.set_name("Tu_1")
r2 = Rabbit(2)
r2.set_name("Zhu_1")
r3 = r1 + r2
r3.set_name("Er_1")
print(r1)
print(r2)
网友评论