【发布时间】:2014-10-21 05:41:42
【问题描述】:
从子类中初始化父类,以便创建的子类实例可以使用父类属性是一种好习惯吗? 这样做是否有替代方案或最佳做法?
举个例子:
class Animal(object):
def __init__(self, name, weight, cute=False, image=None):
#Instantiation attributes
self.name = name
self.weight = weight
self.cute = cute
self.image = image
#Attributes common to all animals
self.extinct = False
def get_animal_stats(self):
print arbitrary_animal_stat
class Dog(Animal):
def __init__(self, name, weight):
Animal.__init__(self, name, weight, cute=True, image="dog.com")
#Additional attributes unique to dogs
self.number_legs = 4
self.teeth = True
def make_noise(self):
print "Bark!"
据我了解,在子类初始化期间不初始化父类,子类对象只能访问自己的属性(即number_legs和tooth,以及make_noise)而不是父类的属性或方法(即灭绝, 和 get_animal_stats)。
我发现自己为预定义对象编写了许多小类,但必须用子对象初始化父对象。这样,我可以动态创建一个简单的 Animal,或者通过 Dog 子类创建一个更具描述性的 Animal。
从子类实例访问 Parent 属性和方法的正确方法是什么?我是否误解了子类的使用?
【问题讨论】:
标签: python inheritance subclass