码迷,mamicode.com
首页 > 其他好文 > 详细

类,对象 ,封装,实例变量,类变量,继承,多态

时间:2017-12-20 13:43:16      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:nbsp   其他   面向对象   引用   多态   创建   方法   class   ret   

类:对一类事物的抽象。例如:人 ,狗,猫,鸟。。。这样是一大类的概括。讲人,可以指很多人,狗也可以分很多种狗

对象:具体的某个类的实例。就想 张三--》指的就是人这个类下面的具体的某一个实例。泰迪 就是狗这个类下面的某个实例

面向对象的三个特性:

  封装:就是将属性给封装起来,这个是你特有性质,你可以让外界知道,也可以不让外界知道

例如:

  

# 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)

 

类,对象 ,封装,实例变量,类变量,继承,多态

标签:nbsp   其他   面向对象   引用   多态   创建   方法   class   ret   

原文地址:http://www.cnblogs.com/zylong1201/p/8065745.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!