Python中静态方法、类方法和文件操作

ADS交叉耦合振荡器VCO仿真 本文主要参考视频中如何使用进行ADS交叉耦合振荡器仿真和分析,由于视频中有诸多错误和视频清晰度较低,虽然视频博主及时改正,为了节省学习时间,可以直接参考本文。 阅读详情

不同方法的使用

1.实例方法(回顾)

定义:第一个参数是self(代表是调用对象)

调用:必须先创建对象(实例化),才能通过对象去调用

用途:操作实例属性(比如self.name)、实例相关的功能。

class Person:
    def __init__(self,name):
        self.name = name

    def greet(self):
        print(f"你好我是{self.name}")

person = Person("小明")
person.greet()
print(person.name)

2.什么是静态方法?

静态方法是一种特殊的函数,它虽然定义在类中,但是和类本身没有关系,只靠传入的参数就能完成功能。有点像美国的那种寄宿家庭,就是给点寄养费就在他家住,相当于临时监护人那种。那你付的寄养费就相当于传入的参数,然后临时监护人就相当于类名。

定义:需要修饰器@staticmethod

调用方式:类名.方法名()

class GeometryTool:
    @staticmethod
    def circle_area(radius):
        return 3.14*radius**2   #圆面积计算公式

#可以不用创建对象直接通过方法调用
print(GeometryTool.circle_area(1))

3.什么是类方法?

类方法主要是来操作类属性的,类属性相当于一个类共有的属性,比如一个班级中每个不同的人是实例属性,那和整个班级相关的就是实例属性。

定义:使用修饰器@classmethod

传入的第一个参数是cls,代表类

class Person:
    class_id = "八(29)"
    
    @classmethod
    def set_class_id(cls,id):
        cls.class_id = id

    @classmethod
    def get_class_id(cls):
        return cls.class_id


print(Person.get_class_id())
Person.set_class_id("九(29)")
print(Person.get_class_id())

总结:

我将用最不绕弯子,最直白的方式告诉你三者分别什么时候使用。操作实例属性使用实例方法—第一个参数是self代表调用本身;操作类属性使用类方法—第一个参数是cls代表类;不操作属性只需要入参使用静态方法。

文件操作

1.打开和关闭文件

文件打开后必须要关闭,所以推荐使用第二种方式自动关闭,不需要手动写关闭。

定义:open(“文件名”,“读写模式”,“编码格式”)

f1 = open("test.txt","r",encoding="utf-8")
print(f1.encoding)
f1.close()
print(f1.closed)

with open("test.txt","r",encoding="utf-8") as f2:
    print(f2.encoding)
print(f2.closed)

2.文件读写

文件访问模式

+代表可以同时读写,如果是访问二进制文件需要加b模式(如rb,wb等)

读取文件常用方法

(1)read(n):读取指定字符/字节

语法:文件对象.read(n),n为读取的字符数(文本模式)或字节数(二进制模式),如果没有n就是默认读取全部文件

文件读取是由指针的,意思就是光标一样,读取多少个字符下一次就会在读取完字符位置作为开头。

with open("test.txt","r",encoding="utf-8") as f:
    print(f.read(2))
    print(f.read(7))
    print(f.read())

(2)randlines():读取所有行(返回列表)

with open("test.txt","r",encoding="utf-8") as f:
    line1 = f.readline()
    line2 = f.readline()
    line3 = f.readline()


print("第一行",line1,end="")
print("第二行",line2,end="")
print("第三行",line3,end="")

(3)写文件:write()

文本文件:内容必须是字符串;二进制文件:内容必须是字节串

文本文件写入

只写模式(w):文件不存在则创建,存在则覆盖原有内容

with open("test.txt","w",encoding="utf-8") as f:
    f.write("go!go!go!")

追加模式(a):文件不存在则创建,存在则新内容会追加在文件末尾,不会覆盖已有内容

with open("test.txt","a",encoding="utf-8") as f:
    f.write("出发喽!")

读写二进制文件:图片,视频等

with open("image.png","rb") as f1:
    image_data=f1.read()
    print(image_data)

with open("image_cv.png","wb") as f2:
    f2.write(image_data)

(4)文件指针定位:

文件指针是“下次读写的起始位置,默认:读模式指针在文件开头;写/追加模式在指针末尾

常用方法:

tell():返回当前指针位置(字节数);

seek(offset,whence):移动指针(offset:偏移量;whence:参考点:0【文件开头】1【当前位置】2【文件末尾】)

with open("test.txt","w+",encoding="utf-8") as f:
    f.write("go!go!go!出发喽!")
    print("移动前指针位置:",f.tell())
    f.seek(0)
    print("移动后指针位置:",f.tell())
    print(f.read())

(5)常见错误:

3.文件目录常用操作

前提:导入os模块

import os #导入操作系统相关模块

文件操作:重命名和删除

(1)重命名文件/目录:os.rename()

核心功能:给文件或目录该名字,还能实现:移动文件到同一磁盘的其他目录“

import os #导入操作系统相关模块

#重命名文件
os.rename("test.txt","oracle.txt")
os.rename("oracle.txt",r"D:\pythonjob\test_01")

(2)删除文件:os.remove()

核心功能:删除指定路径的文件(只能删文件,不能删目录)

#删除文件
os.remove("oracle.txt")  #删除当前目录的文件
os.rename(r"D:\pythonjob\test_01\oracle.txt") #删除指定路径下的文件

目录操作:创建、删除与查看

(3)创建目录(文件夹):os.mkdir()

核心功能:创建一个新的空目录(文件夹)

# 创建空文件夹
os.mkdir("hello1")
os.mkdir(r"D:\pythonjob\test_01\hello2")

(4)删除目录(文件夹):os.rmdir()

核心功能:删除指定的空目录(只能删空目录,目录里有文件/子目录会报错)

#删除文件夹
os.rmdir("hello1")
os.rmdir("hello2")

(5)查看当前工作目录:os.getcwd()

核心功能:获取python脚本当前运行的目录(返回绝对路径)

# 获取当前文件路径
print(os.getcwd())

(6)查看目录内容:os.listdir()

核心功能:获取指定目录下的所有文件和子目录,但会一个列表(元素是文件名/目录名)

#查看目录内容
print(os.listdir())
print(os.listdir(r"D:\pythonjob"))

路径检验:判断文件/目录是否存在

(7)检验路径是否存在:os.path.exists()

核心功能:判断指定路径(文件或目录)是否存在,返回True(存在)或False(不存在)

# 判断文件或者目录是否存在
print(os.path.exists("oracle.txt"))
print(os.path.exists(r"D:\pythonjob\test_01"))

(8)检验是否为目录

核心功能:判断路径是否存在,且是一个目录(返回True/False)

# 判断目录是否存在
print(os.path.isdir("oracle.txt"))
print(os.path.isdir(r"D:\pythonjob\test_01"))

从数字后端角度谈谈occ电路(一) 摘要:本文介绍了芯片测试中OCC(On-Chip Clock Control)电路的设计与应用。随着工艺进步,芯片制造面临Stuck-at、Bridging和Delay等故障类型,需要不同时钟频率进行测试。OCC电路通过Clock Selection、Clock Chopping Control和Clock Gating三个模块,实现ATE时钟与PLL时钟的切换控制,支持慢速时钟检测Stuck-at故障和快速时钟检测Delay故障。文章详细解析了OCC电路结构及各模块功能,包括同步单元、移位寄存器等关键组件 阅读详情

相关推荐

手把手教你用STM32单片机DIY一个简易PLC(附完整电路图与PCB文件)

本文详细介绍了如何利用STM32单片机DIY一个简易PLC控制器,涵盖硬件设计、电路图解析、PCB布局优化及固件框架实现。通过完整的电路图和PCB文件,帮助读者从元器件选型到工业级优化,逐步构建可靠的PLC系统,特别适合工业自动化爱好者和学习者实践。

weixin_42527160的博客 571

Python 实例方法、类方法和静态方法

在 Python 中,实例方法(instance method),类方法(class method)与静态方法(static method)经常容易混淆。本文通过代码例子来说明它们的区别。 实例方法 Python 的实例方法用得最多,也最常见。我们先来看 Python 的实例方法。 class Kls(object): def __init__(self, data): ...

Leo的博客 8万+

Linux下CUDA 11.8与vllm的完美搭配:从环境配置到避坑指南

本文详细介绍了在Linux系统中为CUDA 11.8环境部署vLLM的完整实战指南。针对cu118与vLLM的版本兼容性核心问题,提供了从Python、PyTorch版本选择,到关键依赖vllm-nccl-cu11的安装避坑,以及环境调优、生产级容器化部署的全面解决方案,帮助开发者高效构建稳定的大模型推理服务。

weixin_29095049的博客 308

python中类方法和静态方法区别

面相对象程序设计中,类方法和静态方法是经常用到的两个术语。 逻辑上讲:类方法是只能由类名调用;静态方法可以由类名或对象名进行调用。 在C++中,静态方法与类方法逻辑上是等价的,只有一个概念,不会混淆。 而在Python中,方法分为三类实例方法、类方法、静态方法。代码如下: class Test(object): def InstanceFun(self): print("Instanc...

u014389734的博客 2991

DDR4/LPDDR4与DDR5/LPDDR5的差别

最新的 DDR5 可支持单一芯片容量 64Gbit,最高容量上限可增加到 128GB,较 DDR4 提高了四倍;价格:随着规格提升,DDR5 价格也较 DDR4 高出逾 50%,可能成为业者导入的阻碍。但如前所述,包括 5G、机器学习(ML)等各式进阶应用中,DDR5 的整体效能、规格的提升,对相关业者来说仍具一定优势与吸引力。电源管理 IC(PMIC IC):电源管理芯片内建至 DDR5 内存中,除可提高讯号完整性及噪声辨识能力,还能更具效率与扩展性;DDR5 规格与效能整理。(来源:JEDEC)

flomingo1的专栏 9023

海康VM加密狗无法识别常见问题排查

海康VM加密狗无法识别常见问题排查

视觉人机器视觉的博客 2717

python 静态方法 类方法 的作用_python中的静态方法和类方法

静态方法和类方法在python2.2中被引用,经典类和新式类都可以使用。同时,一对内建函数:staticmethod和classmethod被引入,用来转化类中某一方法为这两种方法之一。静态方法:静态方法是类中的函数,不需要实例。静态方法主要是用来存放逻辑性的代码,主要是一些逻辑属于类,但是和类本身没有交互,即在静态方法中,不会涉及到类中的方法和属性的操作。可以理解为将静态方法存在此类的名称空间中...

weixin_39707201的博客 2050

别再乱用标签了!深度解析Unity Addressables标签(Labels)的三种高级用法与性能影响

本文深度解析Unity Addressables标签(Labels)的三种高级用法与性能影响,包括标签组合查询、Pack Together by Label打包策略及运行时性能优化。通过实战代码示例和性能数据对比,帮助开发者实现精细化资源加载控制与包体优化,提升项目效率。

weixin_30500105的博客 509

静态方法和类方法

1. 类方法 是类对象所拥有的方法,需要用修饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数(当然可以用其他名称的变量作为其第一个参数,但是大部分人都习惯以'cls'作为第一个参数的名字,就最好用'cls'了),能够通过实例对象和类对象去访问。 类方法还有一个用途就是可以对类属性进行修改: 结果显示在用类方法对类属性修改之后,通过类对象和实例对象访问都发生了改变。 2. 静态方法 需要通过修饰器@staticmethod来进行修.

慢行的蜗牛 3025

【06】新国都——新国都 嵌入式笔试,校招,题目记录及解析

本文总结了新国都嵌入式校招笔试题目及解析,内容涵盖C语言基础、Linux系统、数据结构与算法等多个方面。主要包括:1)不定项选择题10道,涉及字符串常量、蓝牙与GPRS区别、编译错误识别等;2)判断题10道,考察Linux权限、循环控制、内存管理等;3)填空题5道,包括编码计算、逻辑运算、宏定义等;4)简答题2道,解析全局变量引用和进程线程区别。题目难度适中,重点考察嵌入式开发基础知识和编程能力,并提供详细解析和扩展知识链接,对准备嵌入式相关笔试具有参考价值。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1432

GMSL转eDP芯片MAX9686X(ADI)

MAX96860/MAX96862/MAX96864解串器可以把单路或双路GMSL转换成eDP V1.4a,支持820MHzPCLK的无压缩的24bpp(每个像素的位数)视频,或660MHz的30bpp视频。芯片的GMSL支持NRZ编码的6Gbps/187Mbps的GMSL2,PAM4编码的12Gbps/187Mbps的GMSL3。同时支持单线(COAX模式)双向全双工传输控制数据和video数据。支持DSC压缩的芯片,最大支持像素时钟1080MHz@24bpp或者864MHz@30bpp,传输方式包括同轴

qflook的博客 2847

Python中的类方法和静态方法

类方法操作类变量,静态方法独立逻辑,均可通过类或实例调用。

m0_62550609的博客 1004

GStreamer 源代码入门

GStreamer 是一个高度模块化的多媒体框架,其源代码结构清晰,设计精良。

深之JohnChen的专栏 953

python类静态方法,python的类方法和类的静态方法

python的类方法和类的静态方法,其实就是一个用@classmethod和@staticmethod修饰的类中的函数。其中类方法要在定义的时候指出在调用它时隐式赋给他的第一个参数,这个参数一般情况下是类本身(cls),这个有点像类的实例方法中代表类实例本身的self。类的静态方法在定义的时候就不用定义这个参数,因为他是静态方法不属于任何一个类实例。========================...

weixin_42105570的博客 3375

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

python静态方法可以被继承吗_Python的静态方法和类方法

Python中使用@staticmethod这个装饰器让方法变为静态方法一:定义@staticmethod: 首先它是一个装饰器,被装饰的方法不需要隐含的参数,对象和对象的实例都可以调用静态方法类方法是通过@classmethod进行装饰,被装饰的方法第一个隐含参数是cls,同样对象和对象的实例都可以调用类方法这里还有一个叫实例方法,实例方法就是实例的方法,它是与实例进行绑定的,只能实例进行调用,...

weixin_39793553的博客 1727

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

对象可以调用静态方法吗_解密 Python 实例、类方法和静态方法

在 freeCodeCamp 社区阅读原文。http://freeCodeCamp.org 计划于 2020 年上线的新课程将增加 Python 项目及证书,欢迎阅读《freeCodeCamp 五周年记丨帮助全世界人们免费学习编程》详细了解。译者注:本文适合于已经具有 Python 基础知识的读者阅读,对于初学者而言,应该已经学习过了《跟老齐学 Python:轻松入门》或者《Python 大学实用...

weixin_39896256的博客 1539

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Python静态方法和类方法的区别和应用

实际上,Python 完全支持定义类方法,甚至支持定义静态方法。Python 的类方法和静态方法很相似,它们都推荐使用类来调用(其实也可使用对象来调用)。 类方法和静态方法的区别在于,Python会自动绑定类方法的第一个参数,类方法的第一个参数(通常建议参数名为 cls)会自动绑定到类本身;但对于静态方法则不会自动绑定。 使用 @classmethod修饰的方法就是类方法;使用@staticmet...

wanttifa的博客 1404

python中类方法和静态方法有什么用_python中类方法和静态方法区别

面相对象程序设计中,类方法和静态方法是经常用到的两个术语。逻辑上讲:类方法是只能由类名调用;静态方法可以由类名或对象名进行调用。在C++中,静态方法与类方法逻辑上是等价的,只有一个概念,不会混淆。而在Python中,方法分为三类实例方法、类方法、静态方法。代码如下:class Test(object):def InstanceFun(self):print("InstanceFun");print...

weixin_39732716的博客 851

python中类方法,静态方法和实例方法的区别

字面上理解: 类方法:只能类调用 实例方法:只能实例调用 静态方法:类和实例都能调用 是不是真的这样呢? 写代码试试 class Multi(object):   def imeth(self,x): print self,x @staticmethod def smeth(x): pri

hexiaodouaipiqiu的博客 863

python静态方法和类方法

python类方法分为实例方法、类方法、静态方法。(1) 实例方法,不用修饰,第1个参数为实例对象,默认为self。通过实例调用时,自动将当前实例传给self;通过类调用时,需要显式将实例传给self。(2) 类方法,用@classmethod修饰,第1个参数为类对象,默认为cls。也可以通过内置函数classmethod(cmeth)将cmeth转为类方法。通过实例调用时,自动将当前类传递给第1个参数;通过类调用时,自动将当前类传递给第1个参数。

sinat_34735632的博客 613

python 实例方法和类方法的区别,python类的静态方法和类方法区别

python类的静态方法和类方法区别先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法。本文由黄哥python培训黄哥所写。# coding:utf-8class Foo(object):"""类三种方法语法形式"""def instance_method(self):print("是类{}的实例方法,只能被实例对象调用".format(Foo))@staticmethodde...

weixin_33916124的博客 1049

Python静态方法和类方法详解

理解这三种方法的区别对于编写清晰、组织良好的Python代码非常重要。正确使用它们可以使你的代码更加模块化,逻辑更加清晰,同时也能更好地表达你的设计意图。

qq_44815135的博客 1008

python中类方法和静态方法的区别_python中静态方法和类方法的区别

1.静态方法就是一个普通的方法,与类和对象无关2.类方法就是JAVA里面的类方法,属于类,被各个对象共享class OptSample(object):count = 0def __init__(self,origin_data):self.origin_data = origin_data@staticmethoddef add_number(num1,num2):print(num1 + nu...

weixin_35774446的博客 6083

python中类方法和静态方法的区别_python类方法和静态方法的区别

Python完全支持定义类方法,甚至支持定义静态方法。Python的类方法和静态方法很相似,它们都推荐使用类来调用(其实也可使用对象来调用)。类方法和静态方法的区别Python会自动绑定类方法的第一个参数,类方法的第一个参数(通常建议参数名为 cls)会自动绑定到类本身;但对于静态方法则不会自动绑定。使用 @classmethod 修饰的方法就是类方法;使用 @staticmethod 修饰的方法...

weixin_42488542的博客 1162

Python静态方法和类方法

静态方法和类方法 静态方法 声明:使用装饰器@staticmethod 调用:类.静态方法() 特点:没有默认的参数 使用规则:实现函数的功能不需要对象,静态方法声明的函数属于当前类,但是不属于该类创建的对象。 例如声明一个计算三角形面积的类,但是在计算三角形面积之前需要判断三条边是否能够构建成一个三角形,在判断之前没有用到该类的属性,那就可以使用静态方法 from mant import sqr...

黄雄进的博客 324

Python中类方法和静态方法的区别

  顾名思义,类方法就是Python类的方法,是这个类可以调用的方法,那么参数需要把这个类本身传进去,不需要实例化就可以使用。静态方法是类中的一个普通函数或者说方法,那么参数和普通的传参一样,类或者实例化的对象都可以直接使用它,也就是说这个静态方法也不需要实例化就可以调用。   转载请注明出处。   觉得我总结写的精辟的话请鼓励一下,谢谢~      以下转自:http...

dingfei8574的博客 657
上一篇: Python中的封装,继承和多态
下一篇: Python中的正则表达式
change_topic
博客等级 码龄4年 97粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值