48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
import time
|
|
|
|
class Animal(object):
|
|
def __init__(self, birth=None, alive=True):
|
|
self.birth = birth if birth else time.time()
|
|
self.alive = alive
|
|
def age(self):
|
|
return time.time() - self.birth
|
|
def kill(self):
|
|
self.alive = False
|
|
|
|
class Dog(Animal):
|
|
def __init__(self, bones_collected=0, **kwargs):
|
|
self.bone_collected = bones_collected
|
|
super(Dog, self).__init__(**kwargs)
|
|
|
|
class Cat(Animal):
|
|
max_lives = 9
|
|
def __init__(self, lives=max_lives, **kwargs):
|
|
self.lives = lives
|
|
super(Cat, self).__init__(**kwargs)
|
|
def kill(self):
|
|
if self.lives>0:
|
|
self.lives -= 1
|
|
if self.lives == 0:
|
|
super(Cat, self).kill()
|
|
else:
|
|
raise ValueError
|
|
return self
|
|
|
|
class Labrador(Dog):
|
|
def __init__(self, guide_dog=False, **kwargs):
|
|
self.guide_dog=False
|
|
super(Labrador, self).__init__(**kwargs)
|
|
|
|
class Collie(Dog):
|
|
def __init__(self, sheep_dog=False, **kwargs):
|
|
self.sheep_dog=False
|
|
super(Collie, self).__init__(**kwargs)
|
|
|
|
lassie = Collie()
|
|
felix = Cat()
|
|
felix.kill().kill().kill()
|
|
mr_winkle = Dog()
|
|
buddy = Labrador()
|
|
buddy.kill()
|
|
print(f"Felix has {felix.lives} lives, Buddy is {'not' if buddy.alive else 'not'} alive!")
|