forked from slanj/pythonproj
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclass_inheritance.py
62 lines (56 loc) · 1.69 KB
/
class_inheritance.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
class Animal(object):
def __init__(self, age):
self.age = age
self.name = None
def get_age(self):
return self.age
def get_name(self):
return self.name
def set_age(self, newage):
self.age = newage
def set_name(self, newname=""):
self.name = newname
def __str__(self):
return "animal:"+str(self.name)+":"+str(self.age)
class Cat(Animal):
def speak(self):
print(self.name, "says: ", "You are idiots!")
def __str__(self):
return "cat:"+str(self.name)+":"+str(self.age)
class Rabbit(Animal):
def speak(self):
print(self.name, "says: ", "You are doomed!")
def __str__(self):
return "rabbit:"+str(self.name)+":"+str(self.age)
class Human(Animal):
def __init__(self, name, age):
Animal.__init__(self, age)
Animal.set_name(self, name)
self.friends = []
def get_friends(self):
return self.friends
def add_friend(self, fname):
if fname not in self.friends:
self.friends.append(fname)
def speak(self):
print('Shut up and take my money')
def age_diff(self, other):
diff = self.get_age() - other.get_age()
if self.age > other.age:
print(self.name, "is", diff, "years older than", other.name)
else:
print(self.name, "is", -diff, "years younger than", other.name)
def __str__(self):
return "person:"+str(self.name)+":"+str(self.age)
hedgehog = Animal(42)
hedgehog.set_name("Bill")
print(hedgehog)
barsik = Cat(42)
barsik.set_name('Barsik')
barsik.speak()
print(barsik)
bart = Human("Bart", 55)
hanry = Human("Hanry", 42)
hanry.age_diff(bart)
hanry.speak()
print(hanry)