文档章节

python的cls,self,classmethod,staticmethod

突然帅了
 突然帅了
发布于 2015/04/25 16:17
字数 253
阅读 11
收藏 1

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


本文转载自:http://m.blog.csdn.net/blog/changzhi1990/21230199

共有 人打赏支持
突然帅了
粉丝 8
博文 90
码字总数 28698
作品 0
西安
Python中的静态方法和类方法

昨天同事问我一个关于Python静态方法和类方法的区别,上网找了些资料整理一下: @staticmethod和@classmethod都是用来定义静态函数的,它们的相同点是都不用实例化类,可以直接用类名来调用其...

zhouxingxing
2012/10/10
0
0
python中类方法、静态方法和普通方法

@classmethod vs @staticmethod(https://my.oschina.net/staticmethod) vs "plain" methods What's the difference? class MyClass: All methods types can be called on a class instance: ......

桉尚
02/01
0
0
Python 回调和首参数绑定

函数参数的绑定和调用方式 这里想讨论的问题是,如果把python的方法作为参数传递给其他对象调用,那么相应的python实例是如何绑定的? 首参数绑定 python 有这样的约定,实例方法的第一个参数...

uniqptr
07/10
0
0
Python实例方法 静态方法 类方法

@staticmethod和@classmethod的区别 class 类 @staticmethod @classmethod 首先创建一个类,如果想要调用Student类中的方法get_score(),就需要先创建类的实例,然后再用类的对象再去调用方法...

Treehl
06/26
0
0
Python中的类、对象、继承

类 Python中,类的命名使用帕斯卡命名方式,即首字母大写。 Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): 省略父类名表示该类直接继承自,类的实例化如下: class Pers...

雪飞鸿
2016/11/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

day58-20180816-流利阅读笔记-待学习

苹果市值破万亿,iPhone 会涨价吗? Lala 2018-08-16 1.今日导读 苹果教父乔布斯曾经说过:“活着就是为了改变世界。”虽然他在 56 岁时就遗憾离世,但他极具创新和变革的精神早已深埋进苹果...

aibinxiao
30分钟前
4
0
[雪峰磁针石博客]python3快速入门教程1 turtle绘图-2函数

菲波那契序列: >>> # Fibonacci series:... # the sum of two elements defines the next... a, b = 0, 1>>> while b < 10:... print(b)... a, b = b, a+b...112......

python测试开发人工智能安全
今天
0
0
java环境变量配置最正确的方式

原贴:https://blog.csdn.net/qq_40007997/article/details/79784711,十分详细,亲测有效

kitty1116
今天
0
0
49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
今天
2
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部