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

【python】@property 和 @staticmethod

@property 和 @staticmethod 是 Python 中的两个装饰器,它们分别用于在类中创建属性或静态方法。它们的作用如下:

@property

@property:用于将类的一个方法作为属性访问。在 Python 中,使用“getter” 和“setter”方法来实现属性,但是使用 @property 装饰器方法可以让你更容易地定义只读属性。当你访问此属性时,这个方法将被调用自动返回所需的值。例如:

class MyClass:def __init__(self):self._my_property = 0@propertydef my_property(self):return self._my_propertyobj = MyClass()print(obj.my_property)   # 输出 0

在上述代码中,@property 装饰器用于将 my_property() 方法转换为类的属性,访问 obj.my_property 等同于调用方法 obj.my_property() 返回值。

总结:加了 @property 的方法,可以当属性使用 (调用时, obj.my_property 后面不用加括号,不用传参数)


@staticmethod 静态方法

@staticmethod:用于定义在类中不需要访问类成员的静态方法。

当你需要定义一个不依赖类中其他成员的函数时,使用 @staticmethod 装饰器可以将其定义为静态方法。

普通方法在调用时会将类实例本身作为第一个参数传递,而静态方法则没有这个参数。

class MyClass:@staticmethoddef my_static_method(a):print("This is {}".format(a))a = 'a static method'
MyClass.my_static_method(a) # 输出 "This is a static method"

总结:

  • 写方法的时候,不用传入 self 参数(不用接收实例作为第一个参数)。 因此不能从静态方法中访问类的实例变量。
  • 不能从静态方法中访问类的实例变量, 如果需要访问实例变量,就需要使用另一种类型的方法,即“类方法”。
  • 不用创建对象,可以直接使用类名来调用方法: MyClass.my_static_method("argument1", "argument2")
http://www.lryc.cn/news/55901.html

相关文章:

  • Spring题集 - Spring AOP相关面试题总结
  • 分考场
  • BI技巧丨DAX Studio
  • Java 8常用时间 API
  • C++运算符
  • 低/无代码赋能企业,IT与业务的角色正在悄然改变
  • SpringCloud学习2(Spring Cloud Netflix)负载均衡Ribbon、Feign负载均衡、Hystix服务熔断
  • Spring 源码解析 - @Async 注解下的循环依赖问题原理
  • 8个全球性编程比赛,天才程序员的梦想舞台
  • 2023年中国海洋大学计算机及电子信息考研分析
  • 【C++笔试强训】第六天
  • Redission 中的 RedLock 原理实现, springboot 你造吗?
  • 【沐风老师】3dMax一键房屋创建者插件使用方法详解
  • C/C++ 变量详解
  • 新SSD盘安装操作系统启动不了
  • 基于Spring、SpringMVC、MyBatis的病历管理系统
  • QT编程从入门到精通之三十四:“第五章:Qt GUI应用程序设计”之“5.5 Qt Creator使用技巧”
  • 网络工程方向有哪些SCI期刊推荐? - 易智编译EaseEditing
  • netty入门(二十六)任务加入异步线程池源码剖析
  • 神经网络算法入门和代码
  • 如何用一个端口同时暴露 HTTP1/2、gRPC、Dubbo 协议?
  • ToBeWritten之杂项2
  • Linux三剑客之awk命令详解
  • C++异常处理:掌握高效、健壮代码的秘密武器
  • Jetpack Compose基础组件之按钮组件
  • 利用json-server快速在本地搭建一个JSON服务
  • 可重入函数与线程安全
  • 一文彻底读懂异地多活
  • 孕酮PEG偶联物:mPEG Progestrone,PEG Progestrone,甲氧基聚乙二醇孕酮
  • 网络系统集成实验(一)| 网络系统集成基础