Python进阶和高阶学习(持续更新)

ops/2024/9/25 19:16:05/

Python 面向对象

创建类

python"># Python面向对象
# 创建类
# 使用 class 语句来创建一个新类,class 之后为类的名称并以冒号结尾:
# class ClassName:
#    '类的帮助信息'   #类文档字符串
#    class_suite  #类体
class Employee:'所有员工的基类'# 类变量empCount = 0# 构造函数(方法)def __init__(self,name,salary):self.name = nameself.salary = salaryEmployee.empCount += 1# 这两个是实例方法 创建实例 实例数量def displayCount(self):# empCount变量是一个类变量,他的这个值在这个类的所有实例之间共享# 你可以在内部类或外部类使用Employee.empCount访问。print("Total Employee %d" % Employee.empCount)def displayEmployee(self):print("Name :",self.name, ",Salary:",self.salary)# self代表类的实例,而非类
# 类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。
class Test: #定义一个叫Test的类def prt(self):#定义了一个实例方法 prt,它有一个参数 self,代表类的实例本身print(self)#打印出当前实例对象的内存地址,即 self 的值。print(self.__class__)#打印出当前实例所属的类对象,即 Test 类的类对象。t = Test() #调用实例方法
t.prt()#解析输出# self 不是 python 关键字,我们把他换成 runoob 也是可以正常执行的:
class Test:def prt(runoob):print(runoob)print(runoob.__class__)t = Test() #调用实例方法
t.prt()#解析输出

创建实例对象

python"># 创建实例对象
# 以前学java一般用关键字new,但是在 Python 中并没有这个关键字,类的实例化类似函数调用方式。
# "创建 Employee 类的第一个对象"
emp1 = Employee("jfh",2000)
# 二
emp2 = Employee("jgj",3000)

访问属性

python">   # 访问属性 使用点号 . 来访问对象的属性。使用如下类的名称访问类变量:emp1.displayEmployee()emp2.displayEmployee()print("Total Employee %d" % Employee.empCount)# 增删改 类的属性
emp1.age = 7
emp1.age = 8
del emp1.age

Python内置类属性

python"># Python内置类属性
# __dict__ 类的属性
# __doc__ 类的文档字符串
# __name__ 类名
# __module__ 类的定义所在模块
# __bases__ 类的所有父类构成元素# eg:
class Employee:empCount = 0def __init__(self,name,salary):self.name = nameself.salary = salaryEmployee.empCount += 1def displayEmployee(self):print("Total Employee %d" % Employee.empCount)def displayEmployee(self):print("Name : ", self.name,  ", Salary: ", self.salary)
print ("Employee.__doc__:", Employee.__doc__)
print ("Employee.__name__:", Employee.__name__)
print ("Employee.__module__:", Employee.__module__)
print ("Employee.__bases__:", Employee.__bases__)
print ("Employee.__dict__:", Employee.__dict__)

python对象销毁(垃圾回收)

python">a = 40 #创建对象
b = a #增加引用  <40> 的计数
c = [b] # 增加引用 <40> 的计数del a # 减少引用 <40> 的计数
b = 100 # 减少引用 <40> 的计数
c[0] = -1 # 减少引用 <40> 的计数# 析构函数 __del__ ,__del__在对象销毁的时候被调用,当对象不再被使用时,__del__方法运行:
# 通常你需要在单独的文件中定义一个类
#类定义
class Point:def __init__(self,x=0,y=0):#类的构造函数,用于初始化对象,self.x = xself.y = y# 析构函数def __del__(self):#类的析构函数,当对象被删除时调用。class_name = self.__class__.__name__#获取类的名称print(class_name,"销毁")
# 对象创建和引用
#创建一个 Point 类的实例 pt1。
# 调用 __init__ 方法初始化对象。
pt1 = Point()
pt2 = pt1
pt3 = pt1#打印对象的内存的地址
print(id(pt1),id(pt2),id(pt3))
# 删除对象引用
del pt1
del pt2
del pt3

类的继承

python"># 定义父类
class Parent:parentAttr = 100#类属性def __init__(self):#类的构造函数print("调用父类构造函数")#定义一个实例方法def parentMethod(self):print('调用父类方法')def setAttr(self,attr):Parent.parentAttr = attrdef getAttr(self):print("父类属性 :", Parent.parentAttr)# 定义子类
class Child(Parent):def __init__(self):print("调用子类构造方法")def childMethod(self):print('调用子类方法')c = Child()          # 实例化子类
c.childMethod()      # 调用子类的方法
c.parentMethod()     # 调用父类方法
c.setAttr(200)       # 再次调用父类的方法 - 设置属性值
c.getAttr()          # 再次调用父类的方法 - 获取属性值

类属性与方法

python">
# 类的方法 类的私有方法
class JustCounter:__secretCount = 0publicCount = 0def count(self):self.__secretCount += 1self.publicCount += 1print(self.__secretCount)counter = JustCounter
counter.count()
counter.count()
print(counter.__secretCount)# 单下划线、双下划线、头尾双下划线说明:
# __foo__: 定义的是特殊方法,一般是系统定义名字 ,类似 __init__() 之类的。
# _foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *
# __foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。


http://www.ppmy.cn/ops/86882.html

相关文章

C++11 智能指针之shared_ptr

1. 背景 基于Alexa的全链路智能语音SDK基于C++实现了跨平台特性,跑通了Android、Mac、Linux等设备,在兼容iOS时发现iOS未提供音频采集和播放的C++接口,所以需要改造SDK,允许SDK初始化时注入外部的采集器和播放器实现类,同时SDK中的Android播放器是基于ffmpeg解码 + opens…

gin路由组

Gin 框架的路由组&#xff08;Route Groups&#xff09;功能非常强大&#xff0c;它允许你将具有相同前缀或中间件的一组路由组织在一起&#xff0c;使代码更加清晰和模块化。下面是对 Gin 路由组的详细讲解。 1. 路由组的创建 你可以通过 Group 方法创建一个新的路由组。路由…

Leetcode49. 字母异位词分组(java实现)

今天我来给大家分享的是leetcode49的解题思路&#xff0c;题目描述如下 如果没有做过leetcode242题目的同学&#xff0c;可以先把它做了&#xff0c;会更好理解异位词的概念。 本道题的大题思路是&#xff1a; 首先遍历strs&#xff0c;然后统计每一个数组元素出现的次数&#…

express连接mysql

一、 安装express npm install express --save二、express配置 //引入 const express require("express"); //创建实例 const app express(); //启动服务 app.listen(8081, () > {console.log("http://localhost:8081"); });三、安装mysql npm i m…

【云原生】ReplicationController控制器详解

ReplicationController 文章目录 ReplicationController说明一、ReplicationControllere介绍二、ReplicationController如何工作三、运行一个ReplicationController四、编写一个ReplicationController清单注意事项4.1、Pod模板4.2、ReplicationController上的标签4.3、Pod选择算…

昇思MindSpore学习入门-自动混合精度

混合精度&#xff08;Mix Precision&#xff09;训练是指在训练时&#xff0c;对神经网络不同的运算采用不同的数值精度的运算策略。在神经网络运算中&#xff0c;部分运算对数值精度不敏感&#xff0c;此时使用较低精度可以达到明显的加速效果&#xff08;如conv、matmul等&am…

Python客户端操作Elasticsearch

一.Python与Elasticsearch交互示例 这段代码是使用Python的elasticsearch模块与Elasticsearch进行交互的示例&#xff1a; from elasticsearch import Elasticsearch# 一.创建连接 # 建立到Elasticsearch的连接&#xff0c;指定主机和端口&#xff0c;设置请求超时时间为3600…

Sklearn实例:水果多分类

机器学习五步&#xff1a; 加载数据集分割数据集建立模型训练模型预测模型 导入库文件 import numpy as np #科学计算库 import matplotlib.pyplot as plt #绘图库可视化函数 import pandas as pd #数据处理库&#xff0c;数据分析库 import seaborn as sns #高级数据可视化…