当前位置: 首页 > news >正文

Python类

Python类


  • Python类
    • 创建类
      • 方法
      • 属性
      • 实例化
    • 继承
      • 父类:汽车,子类:电车
      • 方法重载
    • 导入类
      • 别名
    • 类的编程风格

创建类

一般来说会将类名称首字母大写

用类创建对象的操作称为实例化

class Dog:def __init__(self ,name ,age):self.name = nameself.age = agedef sit(self):print(f"{self.name} is now sitting.")def roll_over(self):print(f"{self.name} rolled over !")

方法

类中定义的函数称为方法

上述代码中的__init__(注意是前后双下划线,不要只写一个)是一种特殊的方法,该方法将在实例化时自动调用,且每个类必须拥有

上述类中的所有方法都带有self参数,且都放在第一位,这是一种规范,使得方法内部可以调用类自带的成员。在实际传递参数中,self参数不需要在初始化时显式的传递。

属性

像上述代码中的 self.name , self.age,由于可以被实例访问,这种成员变量特称为属性(attribute)

实例化

通常将实例用首字母小写来命名

dog = Dog ("xiaoxiao" , 17)
dog.sit()
dog.roll_over()

运行结果如下:

xiaoxiao is now sitting.
xiaoxiao rolled over !

继承

使用继承来使得一个新类自动获得一个旧类的所有属性和方法,此时旧类被称为父类,新类被称为子类

父类:汽车,子类:电车

class Car:def __init__(self,make,model,year):self.make = makeself.model = modelself.year = year self.odometer_reading = 0def get_descriptive_name (self)long_name = f"{self.name} {self.make} {self.model}"return long_name.title()def read_odometer(self):print(f"This car has {self.odometer_reading} meils on it")def update_odometer(self,mileage):if mileage >= self.odometer_reading:self.odometer_reading = mileageelse:print("You can't roll back an odometer!")def increment_odometer(self,miles):self.odometer_reading += milesclass ElectricCar(Car):def __init__(self,make,model,year):super.__init__(make,model,year)

创建子类时,父类必须包含在同文件,且在子类的前面(就像c++一样),被包含在子类的括号中

super()函数使得子类能够调用父类的方法,

方法重载

将父类中的方法在子类中重新定义一遍便可实现重载,在子类中被重载的方法将被完全覆盖掉

class Car:def __init__(self):self.oil_tank = 0;def print_oil_tank(self):print(f"oil_tank: {self.oil_tank}")class ElectricCar(Car):def __init__(self):super().__init__()def print_oil_tank(self):print(f"ElectricCar has no oil tank!")eCar = ElectricCar()
eCar.print_oil_tank()

运行结果如下:

ElectricCar has no oil tank!

导入类

from car import Car,ElectricCar 

上述语句从文件car.py中导入Car、ElectricCar类

from car import *

上述语法导入car.py文件中的所有类,但这种语法容易导致命名冲突并降低代码可读性

import carcar.Car

你也可以直接导入整个文件,再使用.来访问文件内的类

别名

from car import Car as Cimport car as c

使用as关键字可以为导入的模块起别名,之后你可以直接使用别名来访问模块

类的编程风格

命名应采取大驼峰式命名法,即类名的每个单词首字母大写,不添加下划线,而实例和模块名采用全小写,且单词之间用下划线分隔

每个类定义后应紧跟一个文档字符串说明类的功能

类中使用空行分隔方法,模块中使用空行分隔类

导入模块时,先导入标准库模块, 空行分隔后再导入自定义的模块

http://www.hskmm.com/?act=detail&tid=15535

相关文章:

  • 什么是文件外发审批?主要有哪几种关键流程?
  • VPX处理板设计原理图:9-基于DSP TMS320C6678+FPGA XC7V690T的6U VPX信号处理卡 C6678板卡, XC7VX690T板卡, VPX处理板
  • VitePress 添加友链界面
  • 跨网文件摆渡软件:企业数据安全高效传输的关键解决方案!
  • 洛谷题单指南-进阶数论-P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪
  • 第十四届蓝桥杯青少组C++选拔赛[2022.12.18]第二部分编程题(4、充电站) - 指南
  • c语言之自定义memcpy
  • 国产芯片处理板卡:7-基于国产化FT-M6678+JFM7K325T的6U CPCI信号处理卡
  • 一文详解纷享销客CRM Agent平台3大核心能力(附应用场景与案例)
  • QOJ #5076. Prof. Pang and Ants 题解
  • 发现5个宝藏文件摆渡系统 2025年企业首选的摆渡方案是这个!
  • 漏洞挖掘实战:如何定制化模糊测试技术
  • nuxt3中使用pdfjs-dist实现pdf转换canvas实现浏览
  • 查看linux部署网站的TLS版本号
  • 【SpringBoot- Spring】学习
  • 基于Python+Vue开发的摄影网上预约管理系统源码+运行步骤
  • 【习题答案】《深入理解计算机系统(原书第三版)》
  • 深入解析:mosquitto求医之路(3):Docker安装也不好使
  • 在K8S中,在服务上线的时候Pod起不来怎么进行排查?
  • 在线教育软件开发的全流程解析与优化方案
  • 在K8S中,⼀个pod的不同container能够分开被调动到不同的节点上吗?
  • 在K8S中,如果是因为开发写的镜像问题导致pod起不来该怎么排查?
  • 上海应用大学网课自动化学习脚本(基于Python selenium)代码重构为GUI界面 —— 技术笔记
  • 在K8S中,Deployment⽀持扩容吗?它与HPA有什么区别?
  • 开源语音识别FunASR入门详解
  • AT_abc201_f [ABC201F] Insertion Sort 题解
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • c语言动态内存分配
  • 2025.9.24——1橙
  • AT_arc172_d [ARC172D] Distance Ranking