类:对一类事物的抽象。例如:人 ,狗,猫,鸟。。。这样是一大类的概括。讲人,可以指很多人,狗也可以分很多种狗
对象:具体的某个类的实例。就想 张三--》指的就是人这个类下面的具体的某一个实例。泰迪 就是狗这个类下面的某个实例
面向对象的三个特性:
封装:就是将属性给封装起来,这个是你特有性质,你可以让外界知道,也可以不让外界知道
例如:
# Author:zylong class Person: #人都有性别,姓名,身高,体重 def __init__(self,name,sex,heigh,weigh,age): #这些属性可以直接被外界访问的 self.name = name self.sex = sex self.heigh = heigh self.weigh = weigh #这些属性只有类提供方法,才能被访问 self.__age = age def getAge(self): return self.__age #私有方法也是一样的,就是定义的时候以__开头,外界是不能直接方法的 #实例一个类 p1 = Person("张三","男",170,60,22) #这就创建了一个张三的实例,这里要清楚 类实例的过程.属性和方法的区别 #封装:这时候就可以看出,将 姓名,性别,身高,体重,年纪 封装到p1中 #当我想知道p1这个人的age的时候 #print(p1.__age)#会提示没有这个属性,是因为这个属性不能直接被外界访问,只鞥通过类提供的getAge这个方法来获取 print(p1.getAge())#这样就获取到 年纪
类属性和实例属性:
#类属性和实例属性 class Dog: #这个就是类属性 legNums = 4 def __init__(self,sex,heigh,weigh,age): #这里面的就是实例属性 self.sex = sex self.heigh = heigh self.weigh = weigh self.age = age d1 = Dog("雄",50,30,3) print(d1.legNums)#这里显示的是4 #如果d1想改变它的腿数 d1.legNums = 3 print(d1.legNums)#这样就变成了3 #这里要明白一点,这里改变的不是类变量的值,这里是给d1自己增加了一个属性,legNums = 3,。这里要清楚类实例的过程 #访问实例属性的时候,先访问自己的实例中是否有,如果没有再去类中找是否有,如果还没有就抛异常
#如果类属性,是集合列表等,这里要明白,列表,集合等存储的方式。其实类中保存的是对列表的引用,其他地方改变列表的时候,类中的这个列表就会改变
继承
# Author:zylong #这里要知道一点: class Person: def __init__(self,name,age): #构造器,类通过这个来实例这个类。这个跟实例属性一样,如果本类有,就不会去找父类的, # 如果本类有__init__方法,就不会去找父类的,可以再这里自己调用父类的__init__方法 pass class WhitePerson(Person): def __init__(self,name,age): #通过这样的方式,python会自动搜素它的父类 super(WhitePerson,self).__init__(name,age) #python 2.x是 深度优先 3以后都是广度优先
多态:一种接口,多种实现
# Author:zylong #python中多态--一个接口多种实现 class Person(object): def __init__(self,name,age): self.name = name self.age = age def objRun(obj): print("%s is run"%obj.name) class WhitePerson(Person): pass class BlackPerson(Person): pass p1 = WhitePerson("zhang",20) p2 = WhitePerson("yu",21) Person.objRun(p1) Person.objRun(p2)