【发布时间】:2019-12-31 11:12:48
【问题描述】:
我的目标是创建一个类,它使用一组功能扩展不同的类。 在下面的代码中,我能够创建问题的解决方案,但对我来说,这似乎不是解决问题的方法。
要求:
- 不能更改基类(猫、狗)。
- 具有附加功能的类(Pet_Dog、Pet_Cat)应该具有最少的代码量,因为我需要很多代码,只需进行微小的更改。
- 我需要能够导入 BaseClasses(Cat、Dog)以及增强类(Pet_Dog、Pet_Cat)。
到目前为止我的“解决方案”:
class Cat:
def __init__(self, legs):
self.legs = 4
self.lives = 9
def make_sound(self):
print('Meow!')
class Dog:
def __init__(self, legs):
self.legs = 4
self.hobby = 'Digging holes'
def make_sound(self):
print('Woof!')
def chase_tail(self):
print('Chasing tail')
def create_pet(BaseClass):
class Pet(BaseClass):
has_owner = True
def __init__(self, name, legs):
super().__init__(legs)
self.name = name
def plays_with_owner(self):
print('playing with owner...')
return Pet
class Pet_Dog(Dog):
def __init__(self, BaseClass, name, legs):
self.__class__ = create_pet(BaseClass)(name, legs).__class__
self.__init__(name, legs)
class Pet_Cat(Cat):
def __init__(self, BaseClass, name, legs):
self.__class__ = create_pet(BaseClass)(name, legs).__class__
self.__init__(name, legs)
print('Create Pet Dog')
pet_dog = Pet_Dog(Dog, 'Woofer', 4)
print('Dog Name:', pet_dog.name)
print('Dog Lives:', pet_dog.hobby)
print('Dog Owner:', pet_dog.has_owner)
pet_dog.make_sound()
pet_dog.chase_tail()
pet_dog.plays_with_owner()
【问题讨论】:
标签: python python-3.x software-design