python类里会出现这三个单词,self和cls都可以用别的单词代替,类的方法有三种,

一是通过def定义的 普通的一般的,需要至少传递一个参数,一般用self,这样的方法必须通过一个类的实例去访问,类似于c++中通过对象去访问;

二是在def前面加上@classmethod,这种类方法的一个特点就是可以通过类名去调用,但是也必须传递一个参数,一般用cls表示class,表示可以通过类直接调用;

三是在def前面加上@staticmethod ,这种类方法是静态的类方法,类似于c++的静态函数,他的一个特点是参数可以为空,同样支持类名和对象两种调用方式;

下面上代码。

class A(object):

bar = 1

def foo(self):

print 'foo'

@staticmethod

def static_foo():

print 'static_foo'

print A.bar

@classmethod

def class_foo(cls):

print 'class_foo'

print cls.bar

cls().foo()

A.static_foo()

A.class_foo()

输出:

static_foo

1

class_foo

1

foo

python classmethod 的cls_python的cls,self,classmethod,staticmethod相关推荐

  1. python classmethod知识_python基础知识讲解——@classmethod和@staticmethod的作用

    python基础知识讲解--@classmethod和@staticmethod的作用 在类的成员函数中,可以添加@classmethod和@staticmethod修饰符,这两者有一定的差异,简单来 ...

  2. python中classmethod的用法_Python中的@classmethod是如何使用的?

    在写Python程序的时候,特别是实现类方法的时候,通常会用到@staticmethod和@classmethod两种装饰器(function decorator),那这两个装饰器有什么作用呢?在这篇 ...

  3. 深入浅析python 中的self和cls的区别

    python 中的self和cls 一句话描述:self是类(Class)实例化对象,cls就是类(或子类)本身,取决于调用的是那个类. @staticmethod 属于静态方法装饰器 @classm ...

  4. python classmethod 的cls_Python中的@staticmethod,@classmethod,self,cls到底是什么意思?...

    普通类方法 在Python中,通常我们调用某个类的方式,首先要实例化一个对象才能调用该类的方法,比如: # _*_ coding:utf-8 _*_ class People: def hello(s ...

  5. 浅谈python中的一般方法、静态方法(staticmethod)和类方法(classmethod)

    我们先来简单谈谈python类中一般方法.静态方法和类方法的区别. 1.类中的一般方法 一般方法在定义的时候,需要有表示类实例的参数(通常以self表示,例如def foo(self,arg1,arg ...

  6. python为什么用class_python为什么会有@classmethod?

    今天被问了这么个问题 python为什么要有classmethod? 被问倒了,只能回答:classmethod不需要实例化类,用起来比较方便.这么回答没有什么底细,于是查看了一下python的官方文 ...

  7. Python 面试高频问题:cls到底是什么

    上一篇文章介绍了什么是python 中的self,详情请参考: Python面试高频问题:self到底是什么 简单的说self是类(Class)实例化的对象. 面试中还有一个问题经常被提及,那就是-- ...

  8. python:单例模式--使用__new__(cls)实现

    单例模式:即一个类有且仅有一个实例. 那么通过python怎么实现一个类只能有一个实例呢. class Earth:"""假如你是神,你可以创造地球"" ...

  9. python 面向对象篇

    文章目录 面向对象的基础知识 类的实例化 实例属性 类属性 类的操作(调用方法和属性) 实例方法 构造方法 析构方法 self参数的作用 类方法 面向对象的三大特性 继承: 多态:来源于继承,一个事务 ...

最新文章

  1. java webservice接口开发_php开发webservice服务端接口(wsdl)
  2. 用Vue框架和后台请求的时候传递的参数的方式
  3. 【微信小程序企业级开发教程】小程序的配置详解
  4. 队列 和 线程 之GCD dispatch
  5. 性能测试之JMeter取样器详解:sampler
  6. 大容量存储方案_助力卫星发射!威固提供自主固盘,满足载荷数据大容量存储能力...
  7. 计算机专业毕业设计中期考核表,研究生中期考核表导师评语
  8. kickstart-F
  9. 【POJ2069HDU3007】模拟退火算法之最小球/圆覆盖
  10. 筱筱看博客(uni-app、mumu模拟器、真机测试)
  11. iphone 投android电视,手机投屏到电视上的2种方法,看完才知道原来这么简单
  12. 时间计算题100道_@所有考生,答应大家的政经10道计算题来了!
  13. vmware安装了vmware tools还是无法复制文件与文本(ubuntu16.04)
  14. unity il2cpp 热更实现
  15. 计算机上如何查找什么占网速,怎么查看网速被占用(宽带100m但wifi很慢)
  16. h5分享微信好友朋友圈
  17. html如何生成条形码,前端如何生成条形码---JsBarcode
  18. Process finished with exit code 1 解决方法
  19. CPU-流水线的数据相关问题
  20. 国家教育部牵手曙光公司——“百校工程”助力教育行业大数据平台建设

热门文章

  1. javaee互联网轻量级框架整合开发_整合MyBatis的关键点及快速入门
  2. CSS总结——瀑布流布局
  3. hp打印机一直显示正在打印中_苹果Mac出现新bug HP打印机驱动被标为恶意软件
  4. 基于MATLAB的数字水印算法研究实现
  5. 计算机D盘已经清空了为什么显示还是满格的,d盘满到变红色了怎么清理 d盘满到变红色的清理方法...
  6. vs2019创建c++项目步骤_创建django项目的步骤(超级详细)
  7. jquery 判断 重定向url_使用curl获取Location:重定向后url
  8. Redhawk Dynamic Analysis
  9. 服务器更换主板影响,关于x86服务器主板更换导致一系列问题解决
  10. DSP仿真器Debug