学习笔记一:多继承的实现:
一个子类可以继承多个父类,多个父类中有的东西子类中全都有,子类可以有自己独有的属性和方法(这个和单继承一样)
父类1:
class Father(object):
def__init__(self,money):
self.money=money
def play(self):
print("play")
def func(self):
print("func1")
父类2:
class Mother(object):
def__init__(self,faceValue):
self.faceValue=faceValue
def eat(self):
print("eat")
def func(self):
print("func2")
子类:
#一个子类继承两个类
class Child(Father,Mother):
def__init__(self,money,faceValue):
#写法(注意这里多继承和单继承的写法有差异,多继承不用super方法,因为不知道调的是哪一个父类,直接用父类名)
Father.__init__(self,money)
Mother.__init__(self,faceValue)
多继承的实现(测试):
from Child import Child
def main()
c=Child(200,100)
print(c.money,c.faceValue)
c.play() #调用的父类Father的方法
c.eat() #调用的父类Mother的方法
#注意:父类中方法名,默认调用的是在括号中排前面的父类中的方法,Child中Father父类排在前面
c.func() #打印出来的是Father中的func1
if__name__=="__main__":
main()
学习笔记二:多态:一种事物的多种形态,
题目实现:人可以喂任何一种动物
#动物类:定义了一个有name属性和eat方法的Animal类,让所有的动物类都继承自Animal
class Animal(object):
def__init__(self,name):
self.name=name
def eat(self):
print(self.name+"吃")
#猫类,继承自动物类
from animal import Animal
class Cat(Animal):
def__init__(self,name):
#self.name=name已从父类继承过来
super(Cat,self).__init__(name)
#def eat(self):已从父类继承过来
# print(self.name+"吃")
#老鼠类,继承自动物类
from animal import Animal
class Mouse(Animal):
def__init__(self,name):
#self.name=name已从父类继承过来
super(Mouse,self).__init__(name)
#def eat(self):已从父类继承过来
#print(self.name+"吃")
人:思考:人要喂100种动物,难道要写100个feed方法吗,解决方法就用到了多态,动物都继承自Animal,只需要喂Animal就好了,调用feedAnimal去喂任何一种动物
#人可以喂任何一种动物
class Person(object):
def feedAnimal(self,Ani):
print("给你食物")
ani.eat()#传进来的动物去吃
#多态实现:人可以喂任何一种动物
from cat import Cat
from mouse import Mouse
tom=cat("tom")#创建猫类的对象
jerry=Mouse("jerry")#创建老鼠类的对象
tom.eat()
jerry.eat()
#调用人类,可以喂任何动物吃东西
per=Person()
#tom和jerry都继承自动物,这就是多态,一种事物的多种形态,喂猫和老鼠都是喂动物
per.feedAnimal(tom)#传进来的是tom,则喂tom吃东西
per.feedAnimal(jerry)#传进来的是jerry,则喂jerry吃东西
学习笔记三:对象属性与类属性
类属性是指定义在类的内部而且在方法的外部的属性,对象属性是指定义在方法的内部的属性,
类属性和对象属性的区别:
对象属性的优先级高于类属性,对象可以通过 对象名.属性名 调用对象属性和类属性
而类也可以通过 类名.属性名 调用类的属性,但是不能通过这种方式调用对象的属性
class Person(object):
# 类属性是指定义在类的内部而且在方法的外部的属性
name="person"
def __init__(self,age):
# 对象属性是指定义在方法的内部的属性
# 此处age是对象属性
self.age = age
# 创建两个类的对象
per1 = Person(18)
per2 = Person(25)
#类属性和对象属性的区别:
#对象属性的优先级高于类属性
# 对象可以通过 对象名.属性名 调用对象属性和类属性
print(per1.name)
print(per1.age)
# 而类也可以通过 类名.属性名 调用类的属性,但是不能通过这种方式调用对象的属性
# 例如类调用age属性,会报异常AttributeError: type object 'People' has no attribute 'age'
print(People.name)#正常
print(People.age)#异常
文章评论