年薪百万的步伐慢了两天hhhh严格意义是三天。最近买了新的玩具,在家玩玩玩!~~~~
今天开始正式认识类的继承。类的继承是怎么继承呢?看下代码:
class Animal(object): #父类
def __init__(self,name): #构造函数的参数
self.name = name #实例属性 class Dog(Animal): #子类(父类) 表明谁继承了谁的所有属性和方法
pass
在上面的代码中,父类的名字是:Animal 子类的名字是:Dog 我们不难发现,这行代码就是在说明,Dog这个子类将要继承Animal父类的所有类属性以及实例属性和方法。
那么问题来了,怎么表示要继承父类的实例属性呢?
Animal.__init__(self,name) #前面是父类名字,然后点,然后就是构造函数的部分,记住没有def和冒号了。
记住哦,要写在子类的构造函数的代码块中,因为继承的是父类的构造函数中的实例属性。要分清楚实例属性和类属性是两码事儿
看下笔记中的完整代码:
class Animal(object): #父类
def __init__(self,name): #构造函数的参数
self.name = name #实例属性 class Dog(Animal): #子类(父类) 表明谁继承了谁的所有类属性和方法还有实例属性
def __init__(self,name,color,age): #子类构造函数的参数
Animal.__init__(self,name) #继承父类Animal中的实例属性name,
self.color = color
self.age = age def info(self):
return '它是一只{0},它的毛发是{1},今年{2}岁了'.format(self.name,self.color.self.age) #返回结果给调用方 #如果是print输出结果,那么函数会默认返回None值 dog = Dog('小狗','黑色','') #实例化对象,赋值
print(dog.info()) #对象调用Dog中的info()方法
相信如果你看了我所有的文字描述,应该能理解是怎么回事儿了。
那么子类继承父类的所有类属性和实例属性以及方法后,是必要要全部都用上吗?当然不是,继承的目的是(类的继承可以看成对类的属性和方法的重用,能够大大的减少代码量-----来自梁雪峰老师的笔记哦)所以说继承是为了方便我们用父类的功能代码,这样我们可以少些一部分代码,从而就是可以选择行的使用我们需要的部分啦
我们看下代码:
'''实例属性的继承----》子类根据需要,不继承父类的实例属性。怎么不继承父类的实例属性呢?''' class Animal(object): #父类
def __init__(self,name): #构造函数的参数
self.name = name #实例属性 class Dog(Animal): #子类(父类) 表明谁继承了谁的所有属性和方法
def __init__(self,color,age): #子类构造函数的参数
self.color = color
self.age = age def info(self):
return '它的毛发是{0},今年{1}岁了'.format(self.color,self.age) #返回结果给调用方 #如果是print输出结果,那么函数会默认返回None值 dog = Dog('黑色',5) #实例化对象,赋值
print(dog.info()) #对象调用Dog中的info()方法
根据这个代码和上个案例的代码对比发现,虽然子类都继承了父类。但是第二个完整的代码案例中只是表明了我要继承的父类对象是谁,并没有用父类中的任何属性或者方法哦。代码依然是可以执行的,我们看下结果:
这两个小的案例笔记,消化一下,明天开始继续新的学习笔记~~~~20万的梦想,晚安