码迷,mamicode.com
首页 > 编程语言 > 详细

Python中的classmethod与staticmethod

时间:2018-01-06 14:31:25      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:访问   object   python   使用   问题   self   div   第一个   print   

首先,这是一个经典的问题。

我们首先做一个比较:

classmethod的第一个参数是cls,即调用的时候要把传入

这意味着我们我们可以在classmethod里使用类的属性,而不是类的实例的属性(显式创建可用)

staticmethod,调用的时候没有参数,即调用的时候我们不传入东西(类,类的实例)

这意味着我们在staticmethod里无法得到类的实例(显式创建可用)

而我们调用类的普通方法的时候,要把self传进去

这意味着在这个普通方法里,我们只能使用类的实例(self)的属性方法

至于怎么调用呢?看下面:

class A(object):  
    bar = 1  
    def foo(self):  
        print foo  
 
    @staticmethod  
    def static_foo():  
        print static_foo  
        print A.bar    # static_foo位于class A中,A相当于全局的,所以能访问到A的属性
      A().foo() # static_foo位于class A中,A相当于全局的,所以能访问到A的方法
    @classmethod  
    def class_foo(cls):  
        print class_foo  
        print cls.bar  # 等于调用 A.bar
        cls().foo()     # 等于调用 A().foo()
  
A.static_foo()  
A.class_foo()  

输出:

static_foo, 1,foo

class_foo,1,foo

一目了然

 

Python中的classmethod与staticmethod

标签:访问   object   python   使用   问题   self   div   第一个   print   

原文地址:https://www.cnblogs.com/geeklove01/p/8213687.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!