类的执行过程:先进行类的实例化,再进行内置函数(构造方法)的执行,执行调用的方法,再执行类的析构方法。
类属性:当对象有共同属性时,将其拨离出来,属于类,直接使用类名调用(类名.类属性)
面向对象的三特性:封装、继承、多态;
一、封装
调用被封装的内容实例:
class Person(): # 类的公共属性 gj='中国' # 创建构造方法,根据类创建对象自动执行 def __init__(self,name,age,fight): self.name=name self.age=age self.fight=fight # 创建类的方法,即函数,类创建函数在括号中要带"self def caocongzhandou(self): self.fight=self.fight-200 def info(self): print('{0},{1},{2},草丛战斗力:{3}'.format(self.name,self.age,self.gj,self.fight)) def ziwoxiulian(self): self.fight=self.fight+100 def info1(self): print('{0},{1},自我修炼:{2}'.format(self.name,self.age,self.fight)) #根据类Person创建对象per1,将“'小明','18岁',1000”封装到Per1name,age,fight属性中 Per1=Person(u'小明','18岁',1000) # 根据类Person创建对象per2,将“'小花','20',800”封装到Per1name,age,fight属性中 Per2=Person(u'小花','20',800) Per1.info() Per2.info1() # 再执行一次程序 Per1.info() Per2.info1()
二、类的继承
下面的例子将动物的共性都放到父类中,子类中展示每个动物特有的习性,最后每个子类再调用公共的习性
#!/usr/bin/env python #coding:utf-8 #author:wandering class Animal(): def __init__(self,name): self.name=name # 动物的共性都放到父类中 def eat(self): print('{0}吃'.format(self.name)) def drink(self): print('{0}喝'.format(self.name)) def la(self): print('{0}喝'.format(self.name)) # 子类猫继承动物习性 class Cat(Animal): # 子类创建构造方法 def __init__(self,name): # 子类继承父类的属性 Animal.__init__(self,name) # 子类特有的习性 def cry(self): print(u'{0}喵喵叫'.format(self.name)) # 子类狗继承动物习性 class Dog(Animal): # 子类创建构造方法 def __init__(self,name): # 子类继承父类的属性 Animal.__init__(self,name) # self.practise=practise def cry(self): print(U'{0}汪汪叫'.format(self.name)) # 对象C1赋值 C1=Cat(u'我家的小猫') # 对象C1调用父类的方法 C1.eat() C1.drink() C1.la() C1.cry() # 对象D1赋值 D1=Dog(u'隔壁老王家的小狗') # 对象D1调用父类的方法 D1.cry() D1.eat() D1.drink() D1.la()
python的继承顺序:
1.从左到右:
当子类继承N个父类,父类中有同样的方法,当子类调用父类方法时,顺序是从左到右。
2.从下到上:
当子类继承父类之后,子类又重写了父类的方法,调用时先调用子类的方法