六、Python面向对象编程——学习笔记

面向对象编程(OOP):把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。

 三大特点:数据封装、继承、多态

1、类和实例

类(class):抽象概念,比如学生这个概念

实例(instance):具体的一个个学生

定义类 :

class 类名(object):

          pass

类名通常是大写开头的单词,(object)表示从哪个类继承下来,没有合适的继承类,就用object 类 

class Student(object):

    def __init__(self, name, score):
        self.name = name
        self.score = score

 用_init_方法,绑定必要属性。其中,self表示创建的实例本身,永远不变

创建实例的方法:Student(name1,score1

和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self,并且,调用时,不用传递该参数。

数据封装:在类的内部定义访问数据的函数(类的方法

要定义一个方法,除了第一个参数是self外,其他和普通函数一样。要调用一个方法,只需要在实例变量上直接调用,除了self不用传递,其他参数正常传入。

2、访问限制

如果要让class的内部属性不被访问,可以把属性的名称前加两个_,变成私有变量。这样就只能内部访问而外部不能访问。这样可以确保外部代码不能随意修改对象内部的状态。

如果外部代码要获取属性,可以给类增加方法:

class Student(object):

    def __init__(self, name, score):   
        self.__name = name            #定义私有变量
        self.__score = score

    def get_name(self):         #获取name属性
        return self.__name
    def get_score(self):        #获取score属性
        return self.__score
    def set_score(self, score):    #修改score
        if 0 <= score <= 100:
            self.__score = score
        else:
            raise ValueError('bad score')

3、继承和多态

class 类名(object):定义一个新的class时,可以从现有的某个class继承。新的class叫子类(subclass),被继承的叫基类、父类或超类(Base class、Super class)。

继承特点:

1、获得父类全部功能;

2、可以对子类增加一些方法;

3、多态:当子类和父类都存在相同的方法时,子类的方法覆盖了父类的,在代码运行的时候,总是会调用子类的方法

4、获取对象信息

type():判断类型,基本类型都可以判断,但对于class的继承关系,不好判断

isinstance( )

优先使用isinstance

dir( ):获得对象的所有属性和方法,返回一个包含字符串的list。

5、实例属性和类属性

实例属性: 各个实例所有,各不干扰

class Student(object):
    def __init__(self, name):
        self.name = name

类属性:所有实例共享一个属性

class Student(object):
    name = 'Student'

注意:在编写程序的时候,千万不要对实例属性和类属性使用相同的名字,因为相同名称的实例属性将屏蔽掉类属性,但是当你删除实例属性后,再使用相同的名称,访问到的将是类属性。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值