python静态属性和静态方法,python中静态方法和类方法的作用
本文主要介绍Python中静态方法、类方法和属性方法的用法。文章重点介绍了主题的相关信息,有一定的参考价值,有需要的朋友可以参考一下。
00-1010 1.静态方法2。类方法3。静态方法和类方法概述4。属性方法
目录
被修饰的方法可以通过@staticmethod修饰器变成一个静态方法。什么是静态方法?其实不难理解,普通方法实例化后可以直接调用,实例变量或者类变量可以自己调用。但是,静态方法不能访问实例变量或类变量。一个不能访问实例变量和类变量的方法,其实和类本身没有关系,它和类唯一的联系就是需要通过类名来调用这个方法。
应用:
对于一个类,如果要调用它的一个方法,就必须绑定实例,但是不能直接以类名和方法名()的形式调用。因此,如果想通过类而不是实例调用方法,可以使用静态方法@staticmethod和类方法@classmethod。
#静态方法只是名义上被分类管理,实际上不能访问类或实例中的任何属性。
类别狗(对象):
def __init__(self,name):
self.name=name
@staticmethod #实际上与类本身无关,只是名义上是类的一个方法(与类无关,不能访问类中的任何属性和方法)
def eat(自己,名字):
打印( %s正在吃%s%(self.name,name))
d=狗(“某人”)
# d.eat(包子)#错误原因是eat需要一个self参数,但调用时没有传递。没错,因为当eat成为静态方法时,它不会在通过实例调用时,自动将实例本身作为参数传递给self。
#解决方案
#1.调用时主动将实例本身传递给eat方法#移除eat中的self参数,但这也意味着实例中的其他变量不能通过self调用。在吃。
d .吃(d,“包子”)
#执行结果
某人正在吃包子
1.静态方法
类方法是由@classmethod decorator实现的。类方法和普通方法的区别在于类方法只能访问类变量,不能访问实例变量。
类别狗(对象):
Name=SB # class变量
def __init__(self,name):
self.name=name
@classmethod #类方法只能访问类变量,不能访问实例变量。
def eat(自己,名字):
打印( %s正在吃%s%(self.name,name))
def talk(自己,什么的):
print(%s正在说话%s%(self.name,something))
d=狗(“露露”)
d .吃(“馒头”)
#执行结果
某人正在吃馒头
2.类方法
静态方法实际上是在类中定义的方法,但它可以被类直接调用,而无需先实例化该类。不管后来怎么继承,它的实现都是不变的。
该方法在被调用时不需要首先实例化该类,但是当它被继承时,它的实现遵循当前子类(因为它的第一个参数总是cls)
它们常用于将数据预处理等封装在一个类中,以防止代码扩散到类外而难以维护。
3.静态方法与类方法总结
属性的作用是通过@property把一个方法变成静态属性。
类别狗(对象):
名字=蒜头
def __init__(self,name):
self.name=name
@property #将方法转换为静态属性
def eat(自身):
print(%s正在吃%s%(self.name, something ))
@eat.setter #为eat属性赋值
def吃(自己,食物):
打印(“设置为食物”,食物)
def talk(自己,什么的):
print(%s正在说话%s%(self.name,something))
d=狗(“露露”)
#d.eat(baozi )出错说NoneType不可调用,因为此时eat已经变成了静态属性,它不是方法。不需要加()号来调用它,只需要d.eat。
吃东西
d .吃=包子
实际场景应用:
例如,你想知道一个航班的当前状态,它是否已经到达,被延迟,被取消或已经飞走,想知道这种状态你必须经历以下几步:.
连接航空公司应用程序接口查询对查询结果进行解析返回结果给你的用户因此这个状态属性的值是一系列动作后才得到的结果,所以你每次调用时,其实它都要经过一系列的动作才返回你结果,但这些动作过程不需要用户关心,用户只需要调用这个属性就可以了
航班等级(对象):
def __init__(self,name):
self.flight_name=name
定义检查_状态(自身):
打印(检查航班%s状态% self . flight _ name’)
返回数字一(one)
@属性
定义航班状态(自己):
status=self.checking_status()
如果状态==0:
打印(航班取消.)
elif状态==1:
打印(航班已到达.)
elif状态==2:
打印(航班已经起飞.)
else:
打印(无法确认航班状态.请稍后检查)
@flight_status.setter #修改
定义航班状态:
status_dic={
0: 已取消,
1: 已到达,
2: 部门
}
打印( \ 033[31;1m已将航班状态更改为\033[0m ,status_dic.get(status))
@flight_status.deleter #删除
定义航班状态(自己):
打印(状态已移除.)
f=航班(“CA980”)
f。飞行状态
f.flight_status=2 #触发@flight_status.setter
德尔f .飞行状态#触发@flight_status.deleter
到此这篇关于计算机编程语言中静态方法,类方法,属性方法使用方法的文章就介绍到这了,更多相关计算机编程语言静态方法内容请搜索盛行信息技术软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行信息技术软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。