python学习笔记——面向对象celia1

:负责创建对象的抽象“图纸”。
对象:用类创建的具体存在,不同对象间属性可能不同。
类的设计

  1. 先明确程序中需要包含哪些类
  2. 类名:每一个单词首字母大写(驼峰命名法),词与词之间没有下划线。

属性:对对象的特征描述,__init__方法是专门用来定义一个类具有哪些属性的方法。一个对象的属性可以是另外一个类创建的对象
方法:对象具有的行为(动词)

  1. 变量、数据、函数都是对象
  2. 接收对象的变量同样是对对象的引用
  3. 两个下划线开头、结尾,是对象的内置方法

定义类

定义只包含方法的类:

class 类名:
    def 方法1(self,参数列表):  # 第一个参数必须是self
        pass
    def 方法2(self,参数列表):
        pass

# 创建对象格式:
对象变量 = 类名()

定义属性

在初始化方法内部定义属性

  1. 在__init__方法内部使用,self.属性名=属性初始值 来定义属性
  2. 之后再使用类创建对象,都会有该属性

内置方法和属性

__del__方法:对象被从内存中销毁前,会被自动调用。是让对象最后一步做完del方法中的事情后。生命结束
__str__方法:返回对象的描述信息(由哪一个类创建的对象,在内存中的16进制地址),print函数输出使用。必须返回一个字符串。若再开发中,希望使用print输出对象变量时,能够打印自定义的内容,就可以使用str

封装

将属性和方法封装到一个抽象的类中
外界利用类创建对象,然后让对象调用方法
对象方法的细节都被封装再类的内部
注:双类时,先开发被使用的类,例如 房子要使用家具,先开发家具类

形参

形参只定义那些初始值需要从外部传递的量

身份运算符

在针对None比较时,建议使用is判别
is 判断俩个标识符是不是引用同一个对象
is not 判断两个标识符是不是引用不同对象

私有属性,私有方法

应用场景:在实际开发中,对象的某些属性或方法可能只希望在对象的内部使用
定义方式:在属性名或方法名前加两个下划线"__"
若想在外界调用

在这里插入代码片

继承

面向对象三大特性

  1. 封装:根据职责将属性和方法封装到一个抽象的类中
  2. 继承:实现代码的重用,相同的代码不需要重复编写
  3. 多态:不同对象调用相同方法,产生不同的结果,增加代码的灵活度

单继承

继承:子类拥有父类所有方法和属性(子类封装时仅在父类基础上添加比父类多的即可)

class 类名(父类名)

当父类封装的方法不能满足子类的需要:方法重写

对父类方法的扩展

  1. 在子类中重写
  2. 在需要的位置用
super().父类方法  # super是一个特殊的类,super()就是创建出的对象

来调用父类方法执行
3. 他位置针对子类的要求,编写子类特有的代码实现

子类访问父类中的私有属性/方法

通常无法访问父类中的私有属性/方法
若要访问,则要在父类自身的某公有方法中调用自己的私有,再用子类调用父类该公有。

多继承

  1. 有多个父类
class 子类名(父类名1,父类名2,……)
  1. 应避免多父类中方法名重复,子类仅执行先继承的父类中的同名fangfa

MRO方法

搜索顺序:method resolution order
内置属性__mro__ 可以查看方法的搜索顺序,用于多继承时判断方法、属性的调用路径

nonlocal关键字(似global)

nonlocal声明外层局部变量
内层函数想使用外层函数中的变量
通常情况下,内层函数可以调用外层函数的变量,但是不能修改

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值