Python笔记9 类

简介: 本文是作者的Python复习笔记第九篇,深入探讨了Python中的类和面向对象编程。文中详细解释了如何创建类、实例化对象、定义和使用类方法,以及类的继承、重写方法和嵌套类的使用。此外,还讨论了类模块的导入和导出,包括处理类之间的依赖关系。通过示例代码,文章展示了类在Python编程中的应用和重要性。

一、类

通过搭配类与函数,可以写出优美的封装代码
面向对象编程,编写类时,定义了一个大类的对象都有的通用行为

① 创建类

在python中 类的首字母约定俗成为大写
在python2.7中,需要在class Dog(object)中添加object
类中的所有属性在实例化时必须有初始值,可以赋0或者赋空

class Dog():
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.weight = 0

    def sit(self):
        print(self.name.title() + " is sitting now.")

    def roll_over(self):
        print(self.name.title() + " rolled over!")

    def show_weight(self):
        print(self.weight)

    def update_weight(self,weight):
        self.weight = weight

1.方法

类中的函数被称作方法
__init__是一个特殊的方法,带下划线是因为要避免和普通方法起冲突,在每个类开头都需要写这个
self为指向实例本身的引用,是自动传入参数,在类中,可以通过调用self来访问类中的属性和方法

② 根据类创建实例

类是一类事物的通用模型,可以通过通用模型来创造具体的个体

1.创建实例

可以通过类创建一系列的有相同属性与行为特征的类,比如斑点狗与田园犬

my_dog = Dog("Hans", 8)
print("My dog's name is " + my_dog.name.title() + " and its age is " + str(my_dog.age) + " years old.")

2.访问实例的属性、方法(函数)

实例有它的属性以及一些内置在类,为实例所拥有的方法(函数)

print(my_dog.name)
my_dog.sit()

3.修改属性

直接修改属性值

my_dog.weight = 30
print(my_dog.weight)

通过方法(类内函数)修改属性
这样可以方便对一些不合理的调整属性的命令,使之不能直接修改属性而需要通过方法,在方法中对修改值作限制

def update_weight(self,weight):
    self.weight = weight

二、类的继承

类可以有它的父类,子类继承了父类的所有属性与方法,同时还有自己的属性和方法
首先需要在定义子类的括号中添加父类作为参数,因为__init__方法会用到父类的信息
父类也被称为超类(super class),super()用于联系父类和子类

① 类继承的基本模式

class Dog():
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.weight = 0

    def sit(self):
        print(self.name.title() + " is sitting now.")

    def roll_over(self):
        print(self.name.title() + " rolled over!")

    def show_weight(self):
        print(self.weight)

    def update_weight(self,weight):
        self.weight = weight


class ChinesePastoralDog(Dog):
    def __init__(self, name, age):
        super().__init__(name, age)
        self.color = "Blue"

    def show_color(self):
        print(self.color)

my_dog = Dog("Hans", 8)
print("My dog's name is " + my_dog.name.title() + " and its age is " + str(my_dog.age) + " years old.")
herman_dog = ChinesePastoralDog("puper", 23)
herman_dog.show_color()

② 重写父类的方法

父类的一些方法在子类中是无效的,比如汽车需要加油,而电动汽车不需要
在子类中以父类方法同样的名称,对代码进行重写

def roll_over(self):
    print(" ChinesePastoralDog can not roll over!")

herman_dog.roll_over()
 ChinesePastoralDog can not roll over!

③ 类的嵌套:将类生成的实例用作另一个类的属性

在中华田园犬类外,另设了一个类专门用于毛色属性与毛色相关的方法,将毛色的类实例化,并将这个实例作为中华田园犬类中的一个属性,相当于类的嵌套

class ChinesePastoralDog(Dog):
    def __init__(self, name, age):
        super().__init__(name, age)
        self.color = Color()

    def color_about(self):
        self.color.present_color()

    def roll_over(self):
        print("CPD can not roll over!")

class Color():
    def __init__(self, color="Blue"):
        self.color = color

    def present_color(self):
        print(self.color)

herman_dog = ChinesePastoralDog("puper", 23)
herman_dog.color_about()

三、类模块的导入与导出

类可以单独作为一个模块,也可以多个类放在同一个模块里,处理方式与函数的模块导入导出类似
以Class_Car.py文件作为Car类及其子类的模块为例子,其中有子类 Electric Car 和 Fuel Car

① 类模块的导出

和函数一样,在定义完后保存在.py文件中

② 从类模块中调用类

调用Car类:

from Class_Car import Car

调用ElectricCar类:

from Class_Car import ElectricCar

③ 从类模块中调用多个类

调用ElectricCar类与 FuelCar类

from Class_Car import ElectricCar, FuelCar

调用Class_car.py模块文件下的所有类

import Class_Car

④ 类模块间有依赖关系的处理

当Car与Electric Car分别保存在不同模块时,如果调用Electric Car,也就是Car的子类,需要先从另一个模块调用它的父类Car

from Class_Car import Car
from Class_ElectricCar import ElectricCar
目录
相关文章
|
9月前
|
编解码 数据安全/隐私保护 Python
抖音批量发布视频工具,自动上传视频作品笔记,python发布软件
这个抖音批量发布工具包含三个主要模块:主上传程序、配置文件和视频预处理工具。主程序
|
7月前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。
|
11月前
|
人工智能 Ruby Python
python__init__方法笔记
本文总结了Python中`__init__`方法的使用要点,包括子类对父类构造方法的调用规则。当子类未重写`__init__`时,实例化会自动调用父类的构造方法;若重写,则需通过`super()`或直接调用父类名称来显式继承父类初始化逻辑。文中通过具体代码示例展示了不同场景下的行为及输出结果,帮助理解类属性与成员变量的关系,以及如何正确使用`super()`实现构造方法的继承。
494 9
|
9月前
|
API 数据安全/隐私保护 Python
小红书批量发布协议, 抖音自动批量发布软件脚本,笔记作品视频自动发布工具【python】
这个工具框架包含了小红书和抖音的批量发布功能,支持图片和视频处理、定时发布等功能
|
9月前
|
Web App开发 数据安全/隐私保护 Python
抖音快手小红书哔哩哔哩,批量发布作品笔记视频工具,自动发布作品上传笔记视频【python】
这个工具实现了四大平台的视频批量上传功能,包含完整的异常处理和日志记录。使用时需要配置
|
9月前
|
存储 JSON API
小红书批量发布笔记工具,小红书批量上传软件,python框架分享
这个框架包含了配置文件、工具函数、API封装和主程序四个模块。使用时需要先配置账号信息,
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
717 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
12月前
|
数据采集 JSON API
Python 实战:用 API 接口批量抓取小红书笔记评论,解锁数据采集新姿势
小红书作为社交电商的重要平台,其笔记评论蕴含丰富市场洞察与用户反馈。本文介绍的小红书笔记评论API,可获取指定笔记的评论详情(如内容、点赞数等),支持分页与身份认证。开发者可通过HTTP请求提取数据,以JSON格式返回。附Python调用示例代码,帮助快速上手分析用户互动数据,优化品牌策略与用户体验。
2032 3
|
12月前
|
人工智能 Python
[oeasy]python083_类_对象_成员方法_method_函数_function_isinstance
本文介绍了Python中类、对象、成员方法及函数的概念。通过超市商品分类的例子,形象地解释了“类型”的概念,如整型(int)和字符串(str)是两种不同的数据类型。整型对象支持数字求和,字符串对象支持拼接。使用`isinstance`函数可以判断对象是否属于特定类型,例如判断变量是否为整型。此外,还探讨了面向对象编程(OOP)与面向过程编程的区别,并简要介绍了`type`和`help`函数的用法。最后总结指出,不同类型的对象有不同的运算和方法,如字符串有`find`和`index`方法,而整型没有。更多内容可参考文末提供的蓝桥、GitHub和Gitee链接。
306 11
|
存储 C语言 Python
[oeasy]python077_int类型怎么用_整数运算_integer_进制转化_int类
本文主要讲解了Python中`int`类型的应用与特性。首先回顾了`int`词根的溯源,探讨了整型变量的概念及命名规则(如匈牙利命名法)。接着分析了整型变量在内存中的存储位置和地址,并通过`type()`和`id()`函数验证其类型和地址。还介绍了整型变量的运算功能,以及如何通过`int()`函数将字符串转化为整数,支持不同进制间的转换(如二进制转十进制)。此外,文章提及了关键字`del`的使用场景,对比了Python与C语言中`int`的区别,并总结了整型与字符串类型的差异,为后续深入学习奠定基础。
315 1

推荐镜像

更多