【Python学习笔记:8】面向对象+类

本文详细阐述了面向对象编程的三大特征——封装、继承和多态,介绍了如何在Python中实现这些特性,包括类的定义、__init__和__str__方法、私有成员、类方法、静态方法以及魔术方法的使用。同时提到了模块导入的规则。
摘要由CSDN通过智能技术生成

面向对象

三大特征

  • 封装
  • 继承
  • 多态

封装

特性

  • 减少代码冗余
  • 隐藏代码实现细节
  • 保证数据安全性

继承

特性

  • 减少代码冗余
  • 父类功能不满足子类要求时,子类可重写父类方法(可对功能进行扩展)

子类与父类初始化重写与继承

子类复写父类 __init__ 方法,需要调用父类方法,使用 super() 调用,如super().__init__(参数列表)

子类与父类重写或继承可分为以下三种情况

  1. 子类不重写 __init__,实例化子类时,会自动调用父类 __init__
  2. 子类重写 __init__,实例化子类,不会调用父类 __init__
  3. 子类重写 __init__,要继承父类,可使用 super 关键字

重写且需继承语法
super(子类,self).__init__(参数1,参数2,...)
or
super().__init__(参数1,参数2,...)
or
父类名称.__init__(self, 参数1,参数2,...)

super加强

子类重写父类方法,且继承父类方法

多态

特性

  • 开闭原则:对修改是关闭的,对扩展是开放的
  • 不同对象执行同一个动作(功能),产生不同的效果
  • 继承才会有多态

拥有相同属性和行为的多个事物的抽象描述

关键字 class
类名 大驼峰

定义类

class 类名:
成员:
成员变量: 属性
成员方法: 功能

创建对象时,会调用类的__init__方法初始化

使用对象

创建对象
变量 = 类名()

通过.访问对象的成员(成员包括属性和方法)
语法
对象.成员

使用属性

获得属性:对象.属性名
增加属性:对象.新属性名 = 属性值
修改属性:对象.旧属性 = 新值
删除属性:del 对象.属性名

调用方法

语法
对象.方法名([参数列表])

注意:定义方式设置第一个参数是 self,调用方法时不用传递 self 参数,解释器会自动传入

对象方法中的self

  1. 表示调用该方法的对象
  2. 对象方法中可通过 self 获取到调用该方法的对象,可通过 self 操作对象上的属性和方法

初始化__init__()方法

一般会在 __init__() 中定义对象的属性和绑定属性值
创建对象时自动调用执行__init__()初始化方法

语法

class 类名:
def __init__(self[, 参数列表]):

init()自定义参数

class People:
    def __init__(self, name, age):
    self.name = name
    self.age = age
    pass

__str__()方法

__str__() 方法可复写输出信息

  • print(object) 打印对象,会输出创建对象时在内存中的地址
  • __str__() 方法复写后,print(object) 可输出复写的输出信息

语法

class 类名:
def __str__(self):
return "对象的描述信息"

注意

  • 名称固定__str__()
  • print(object) 打印对象时,被 Python 自动调用执行
  • 返回对象的描述信息
  • 不能自定义参数

私有成员

类的私有属性

__private_attrs 两个下划线开头,声明该属性为私有,不可在类外使用或直接访问
类内部方法使用时用 self.__private_attrs

语法

class 类名:
def __init__(self):
self.__属性名 = "属性值"
def __方法名(self):
#方法体

提供 get 方法以供外部访问

作用

  • 保证数据安全性,不能随意修改
  • 提高封装性,保护数据安全,隐藏具体细节

类方法

类也是一个对象,给类对象添加方法,叫做类方法

类方法的定义

  • 必须使用装饰器@classmathod来标识方法为类方法
  • Python解释器自动把类对象传入给类方法的第一个参数,通常使用cls(class缩写)作为类方法第一个形参,调用时不用传参
  • 类方法所有对象共享,可通过类或实例对象进行调用

静态方法

静态方法的定义

  • 需要通过修饰器@statemethod来修饰,静态方法不需要额外定义参数
  • 静态方法可通过类或对象调用

魔术方法

Python 中方法名是__xxx__(),有特殊功能,因此叫“魔法”方法

在这里插入图片描述

在此贴上原文地址:python魔术方法大全-musen

模块导入

如果要使用自定义的类,需要在当前文件中导入自定义类的文件,或导入自定义的类

语法
import 文件名
or
form 文件名 import 文件内定义的类名

模块导入后,可以__name__区分,当前执行模块的__name____main__,其他模块的__name__是模块名本身

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饭碗、碗碗香

感谢壮士的慷概解囊!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值