python类方法@classmethod与@staticmethod
python类方法@classmethod与@staticmethod
一、@classmethod
介绍
与普通的类方法有所不同的是,用@classmethod修饰的类方法不传入self实例本身,而是传入cls,代表这个类自身,可以来调用类的属性,类的方法,实例化对象等。
语法
使用的语法也非常简单,直接在类方法上加上装饰器@classmethod即可,另外传入cls参数作为方法的第一个参数。
class A(object):
@classmethod
def func(cls):
pass
举例
class A(object):
num = 1
def func1(self):
print('func1')
@classmethod
def func2(cls):
print('func2')
print(cls.num)
cls().func1()
if __name__ == '__main__':
A.func2()
------------------------------
>>> func2
>>> 1
>>> func1
二、@staticmethod
介绍
使用@staticmethod修饰的类方法也被称为静态方法,此方法不传入代表实例对象的self参数,并且不强制要求传递任何参数,可以被类直接调用,当然实例化的对象也可以调用。
语法
使用时直接在类方法上加上装饰器@staticmethod,参数不需要self,其他参数也是可选。
class B(object):
@staticmethod
def func()
pass
举例
class B(object):
@staticmethod
def func1():
print('func1')
@staticmethod
def func2(a, b):
print('func2')
print('a=', a)
print('b=', b)
if __name__ == '__main__':
B.func1()
b = B()
b.func1()
B.func2(1, 2)
------------------------------
>>> func1
>>> func1
>>> func2
>>> a= 1
>>> b= 2
python类方法@classmethod与@staticmethod的更多相关文章
- python的@classmethod和@staticmethod
本文是对StackOverflow上的一篇高赞回答的不完全翻译,原文链接:meaning-of-classmethod-and-staticmethod-for-beginner Python面向对象 ...
- Python的classmethod和staticmethod区别
静态方法(staticmethod) 类方法(classmethod) 静态方法和类方法都可以通过类名.方法名或者实例.方法访问. #-*- coding:utf8 -*- class A(objec ...
- Python中classmethod与staticmethod区别
classmethod:类方法staticmethod:静态方法 在python中,静态方法和类方法都是可以通过类对象和类对象实例访问.但是区别是: @classmethod 是一个函数修饰符,它表示 ...
- 粗解python的@classmethod和@staticmethod及普通实例方法
引言: 使用不同的函数定义方法,可以使得函数定义更加有效而且易于维护 本文为博主原创,根据本人自己的理解整理而成,若有不准确的地方,希望能留言告知以免误导他人: 首先进一段代码,来直观感受一下不同类型 ...
- Python中classmethod和staticmethod的区别
学习python中经常会出现一些相近或者相似的语法模块等,需要对比分析才能加深记忆,熟练运用. staticmethod:静态方法 classmethod:类方法 在python中,静态方法和类方法都 ...
- 【面试必问】python实例方法、类方法@classmethod、静态方法@staticmethod和属性方法@property区别
[面试必问]python实例方法.类方法@classmethod.静态方法@staticmethod和属性方法@property区别 1.#类方法@classmethod,只能访问类变量,不能访问实例 ...
- Python的3个方法:静态方法(staticmethod),类方法(classmethod)和实例方法
Python的方法主要有3个,即静态方法(staticmethod),类方法(classmethod)和实例方法,如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
- Python - 静态方法@staticmethod和类方法classmethod
传送门 https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/Day09/%E9%9D%A2%E5%90%91%E5%AF ...
- Classmethod and Staticmethod - Python 类方法 和 静态方法
classmethod and staticmethod classmethod 的是一个参数是类对象 cls (本类,或者子类), 而不是实例对象 instance (普通方法). classmet ...
随机推荐
- [Full-stack] 一切皆在云上 - AWS
一元课程:https://edu.51cto.com/center/course/lesson/index?id=181407[非常好] Based on AWS Lambda. 包含:DevOps ...
- SpringBoot之整合Mybatis(增,改,删)
一,在上一篇文章SpringBoot之整合Mybatis中,我们使用spring boot整合了Mybatis,并演示了查询操作.接下来我们将完善这个示例,增加增,删,改的功能. 二,改动代码 1.修 ...
- C++虚函数表和对象存储
C++虚函数表和对象存储 C++中的虚函数实现了多态的机制,也就是用父类型指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数,这种技术可以让父类的指针有"多种形态",这 ...
- CF #579 (Div. 3) D1.Remove the Substring (easy version)
D1.Remove the Substring (easy version) time limit per test2 seconds memory limit per test256 megabyt ...
- SpringBootSecurity学习(05)网页版登录内存中配置默认用户
默认用户 前面的例子中我们使用的都是配置文件中配置好的默认用户: 除了可以配置账号密码,还可以在配置文件中配置角色: 这个角色是后面实现权限过滤的重要内容,后面会重点讨论. 在内存中配置默认用户 这样 ...
- 第一个SharePoint Add-in工程
一.创建SharePoint hosted 工程 1.创建承载SharePoint Add-in独立域 首先,确定承载的应用程序的独立域名,可以使用类似这样的域名apps.contoso.com,鉴于 ...
- 探索ASP.NET Core 3.0系列一:新的项目文件、Program.cs和generic host
前言:在这篇文章中我们来看看ASP.Net Core 3.0应用程序中一些基本的部分—— .csproj项目文件和Program.cs文件.我将会介绍它们从 ASP.NET Core 2.x 中的默认 ...
- centos7 远程连接其他服务器redis
在本地远程连接 在终端输入: redis-cli -h 服务器ip地址 -p 端口 -a 密码
- 基于hap的文件上传和下载
序言 现在,绝大部分的应用程序在很多的情况下都需要使用到文件上传与下载的功能,在本文中结合hap利用spirng mvc实现文件的上传和下载,包括上传下载图片.上传下载文档.前端所使用的技术不限,本文 ...
- [ProblemSolving][Ubuntu][LyX] The selected document class ... requires external files that are not available...
I installed LyX in my Ubuntu(version LTS 18.04), but I just can't make it work. Every time I open an ...