staticmethod、classmethod的使用
staticmethod
首先要明白两个概念
绑定方法:但凡是定义在类的内部,并且没有被任何装饰器修饰过的方法,就是绑定方法,并且有自动传值功能。类直接调用该方法时,改方法叫做类的函数属性;对象在调用该方法时,该方法叫绑定方法。
示例:
只要是类中的函数没有被装饰器修饰,就会自动传值,该函数在对象调用时为绑定方法;类直接调用时,始终为功能函数
class A:
# @staticmethod
def foo(self):
print("AAA") a = A()
print(a.foo)
print(A.foo)#只要是写成"类名.方法名"的格式,不管该方法在类中是否被装饰器修饰,最终打印得到的都是函数方法,因为对于这种
# 调用方式,类中的方法始终都是类中的方法函数
当类中的函数被装饰器装饰后,在对象调用时和用类直接调用时,均为功能函数或方法函数
class A:
@staticmethod
def foo():
print("AAA") a = A()
print(a.foo)
print(A.foo)#只要是写成"类名.方法名"的格式,不管该方法在类中是否被装饰器修饰,最终打印得到的都是函数方法,因为对于这种
# 调用方式,类中的方法始终都是类中的方法函数
staticmethod
作用:
1.解除类中绑定方法的绑定,使该方法不需要通过"对象.方法名"的形式进行调用,反而直接使用"类名.方法名"的形式调用,使该方法成为类的方法直接使用。
2.方法在类中定义时,在类名后的()内不需要些self
示例:
class A:
@staticmethod
def foo():
print("AAA") A.foo#使用该方式,可直接调用类中的foo方法,不需要实例化调用
classmethod
staticmethod、classmethod的使用的更多相关文章
- Python staticmethod classmethod 普通方法 类变量 实例变量 cls self 概念与区别
类变量 1.需要在一个类的各个对象间交互,即需要一个数据对象为整个类而非某个对象服务. 2.同时又力求不破坏类的封装性,即要求此成员隐藏在类的内部,对外不可见. 3.有独立的存储区,属于整个类. ...
- python 类中staticmethod,classmethod,普通方法
1.staticmethod:静态方法和全局函数类似,但是通过类和对象调用. 2.classmethod:类方法和类相关的方法,第一个参数是class对象(不是实例对象).在python中class也 ...
- python staticmethod classmethod
http://www.cnblogs.com/chenzehe/archive/2010/09/01/1814639.html classmethod:类方法staticmethod:静态方法 在py ...
- python中staticmethod classmethod及普通函数的区别
staticmethod 基本上和一个全局函数差不多,只不过可以通过类或类的实例对象 (python里光说对象总是容易产生混淆, 因为什么都是对象,包括类,而实际上 类实例对象才是对应静态语言中所谓对 ...
- Python中的 @staticmethod@classmethod方法
python类中有三种方法,常见的是实例方法,另外两种是staticmethod装饰的静态方法,和classmethod装饰的类方法. 1.对比 流畅的python里,用一个例子进行了对比: (1)两 ...
- python之内置装饰器(property/staticmethod/classmethod)
python内置了property.staticmethod.classmethod三个装饰器,有时候我们也会用到,这里简单说明下 1.property 作用:顾名思义把函数装饰成属性 一般我们调用类 ...
- staticmethod classmethod
1. 静态方法 @staticmethod 只是名义上归类管,实际上静态方法里访问不了类或者实例中的任何属性 2. 类方法 @classmethod 只能访问类变量,不能访问实例变量 3.属性方法 @ ...
- python staticmethod,classmethod方法的使用和区别以及property装饰器的作用
class Kls(object): def __init__(self, data): self.data = data def printd(self): print(self.data) @st ...
- staticmethod classmethod修饰符
一.staticmethod(function) Return a static method for function.A static method does not receive an imp ...
- instancemethod, staticmethod, classmethod & abstractmethod
实例方法.静态方法.类方法.抽象方法 1. Python中方法的工作方式(How methods work in Python) A method is a function that is sto ...
随机推荐
- hibernate的session详解
- code forces 439 C. The Intriguing Obsession
C. The Intriguing Obsession time limit per test 1 second memory limit per test 256 megabytes input s ...
- Connect the Cities(prim)用prim都可能超时,交了20几发卡时过的
Connect the Cities Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- NFS服务安装及配置
服务器环境:CentOS6.9 Linux 2.6.32-696.el6.x86_64 安装NFS服务 nfs客户端和服务端都只需要安装nfs-utils包即可,并且yum安装时会连带安装rpcbi ...
- vue初级学习--环境搭建
一.导语 最近总想学点东西,es6啊.typescript啊,都想学,刚好有个机遇,可以学点vue,嗯,那就开始吧. 二.正文 1.node环境: 下载安装nodeJs,最好是1.6以上的版本,下载地 ...
- 使用TP5创建一个REST API
原文在这里 : http://hmw.iteye.com/blog/1190827 tp自带的api,get请求接口 /** * 显示资源列表 * * @return \think\Response ...
- 分享如何将git项目导入GitHub(附创建分支)
前言:我们应该很多都会有自己的私有项目,大多情况都是存放在自己的硬盘中,今天我分享一下怎么讲自己的私有项目更新到GitHub上,这样再也不用担心项目丢失了. 一:下载git 下载链接git链接,根据自 ...
- ThreadLocal 原理解析
1.对Thread local 理解 ThreadLocal 是为了解决线程间同步而创建的一个新的思路.简单来说就是每个线程都保存一个变量副本. 如果在Thread 内部定义一个field变量,也可以 ...
- 简单聊聊java中如何判定一个对象可回收
背景 说到java的特性,其中一个最重要的特性便是java通过new在堆中分配给对象的内存,不需要程序员主动去释放,而是由java虚拟机自动的回收.这也是java和C++的主要区别之一:那么虚拟机是如 ...
- SqlServer 数据库附加问题:不是主数据库文件
一.前言 今天公司要切换数据库服务器,数据库文件大于2G,结果再附加到另一服务器的数据库里面,就产生了一个问题.如下: 标题:Microsoft SQL Server Management Studi ...