首页 > 编程语言 >【python】静态函数与类方法

【python】静态函数与类方法

时间:2023-12-07 10:44:06浏览次数:40  
标签:函数 Person python module1 静态 方法 def

静态函数与类方法

静态函数其实和类的方法没什么关系,它只是恰好定义在类的内部而已,所以这里我用函数(function) 来形容它。它可以没有参数:

class Person:
    @staticmethod   # 用 staticmethod 这个修饰器来表明函数是静态的
    def sayHello():
        print('Hello')

Person.sayHello() # 输出 'Hello`

静态函数的调用方式是类名加上函数名。类方法的调用方式也是这样,唯一的不同是需要用 @staticmethod 修饰器,而且方法的第一个参数必须是类:

class Person:
    @classmethod    # 用 classmethod 这个修饰器来表明这是一个类方法
    def sayHi(cls):
        print('Hi: ' + cls.__name__)

Person.sayHi() # 输出 'Hi: Person`

 

# 在 module1.py 文件中:
def global():
    pass 

class Util:
    @staticmethod
    def helper():
        pass

# 在 module2.py 文件中:
import module1
module1.global()        # 调用全局函数
module1.Util.helper()   # 调用静态函数

 

参考资料

1. 静态函数与类方法

类方法和静态函数的调用方法一致,在定义时除了修饰器不一样,唯一的区别就是类方法需要多声明一个参数。这样看起来比较麻烦,但静态函数无法引用到类对象,自然就无法访问类的任何属性。 于是问题来了,静态函数有何意义呢?有的人说类名可以提供命名空间的概念,但在我看来这种解释并不成立,因为每个 Python 文件都可以作为模块被别的模块引用,把静态函数从类里抽取出来,定义成全局函数,也是有命名空间的:
 

 

   

标签:函数,Person,python,module1,静态,方法,def
From: https://www.cnblogs.com/sunbines/p/17881186.html

相关文章

  • python--元组、列表、集合、字典、函数简单总结与区分
    元组:用“()”,不可修改其中的元素,有索引,tuple可建立一个元组。列表:用“【】”,可修改其中元素,有索引,可用list函数创建。集合:用“{}”,且{}相当于set()相当于set(【】),无序,无索引,可修改其中元素。字典:用”{}“,无索引,可修改其中元素,成对出现(区别于集合)。    例如:mynumber={"a":1,"b"......
  • 一个格式化时间戳的函数
    1constDataFormat=(fmt,date)=>{2letdata=newDate(date);3if(isNaN(data)){4data=newDate();5}6(()=>{7consto={8'y+':data.getFullYea......
  • Go--字符串函数
    示例:packagemainimport("fmt""strings")funcmain(){//strings.Contains():判断一个字符串是否包含另一个子字符串str:="Hello,World!"substr:="World"ifstrings.Contains(str,substr){//原始字符串、要查找的......
  • Golang unsafe.Sizeof 函数代码示例
    在Go语言中,可以使用unsafe.Sizeof()函数来获取变量或类型的大小(以字节为单位)。下面是一个示例代码,演示如何使用unsafe.Sizeof()函数:packagemainimport( "fmt" "unsafe")typePersonstruct{ Namestring Ageint}funcmain(){ varnumint varstrstring......
  • Golang标准库:非类型安全操作(Arbitrary 类型 Pointer 类型 Sizeof 函数 Offsetof 函数)
    unsafe库徘徊在“类型安全”边缘,由于它们绕过了Golang的内存安全原则,一般被认为使用该库是不安全的。但是,在许多情况下,unsafe库的作用又是不可替代的,灵活地使用它们可以实现对内存的直接读写操作。在reflect库、syscall库以及其他许多需要操作内存的开源项目中都有对它的引用。un......
  • Python脚本导入Excel文件可视化导出统计工时情况
    在当今快节奏的工作环境中,对员工工时的有效管理和分析变得至关重要。我开发了一个Python脚本,专门用于从Excel文件中导入工时数据,并将这些数据以直观的图表形式进行可视化展示。这一工具的目的是为了帮助企业和组织更好地理解和优化员工的工时分配,进而提升整体的工作效率和决策质......
  • python多线程下载图片
    urls.json文件数据格式如下["https://example.com/image1.jpg","https://example.com/image2.jpg","https://example.com/image3.jpg"] 代码如下importjsonimportrequestsimportthreadingdefdownload_image(url):respo......
  • CMC-ORACLE-函數row_number() over(partition by )函数用法
    row_number()over(partitionby)函数用法row_number()over(partitionby),作为oracle常用的分析函数,身为数据开发时必须要掌握的。不过一段时间不用,难免会有些忘记,今天整理一下一些场景下的用法。现有表(test_rownumber)有如下数据:RUSER(用户名)RID(用户编号)RSAL(用户消费)RD......
  • 无涯教程-Erlang - memory函数
    返回一个列表,其中包含有关由Erlang动态分配的内存的信息,该列表的每个元素都是一个元组{Type,Size},第一个元素Type是描述内存类型的原子。memory-语法memory()memory-返回值返回一个列表,其中包含有关由Erlang仿真器动态分配的内存的信息。-module(helloLearnfk).-export......
  • STM32学习笔记_点灯(基于库函数方式)
    1.使能外设时钟输入:RCC_APB2PeriphClockCmd函数,查看函数定义,根据函数定义填写参数:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);2.配置端口模式输入函数GPIO_Init,跳转到函数定义,查看函数定义得知函数体的第二个参数是结构体,先定义结构体并且填写结构体的各个参数,然后填写......