Chinaunix首页 | 论坛 | 博客
  • 博客访问: 344812
  • 博文数量: 135
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1106
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-20 09:56
文章分类

全部博文(135)

文章存档

2017年(3)

2016年(18)

2015年(69)

2014年(39)

2013年(6)

我的朋友

分类: Python/Ruby

2015-12-25 13:14:25


转载自:http://blog.csdn.net/openxmpp/article/details/8779691

1) @classmethod

用classmethod修饰表示这是一个类方法,如果没有用@classmethod修饰,则表示这是一个对象方法,使用时必须与一个对象绑定,如下

class MyClass():       def thisIsClassMethod(self):       print "this is a class method" if __name__ == "__main__":     c = MyClass()     MyClass.thisIsClassMethod(c) #调用时传入参数c,否则编译错误
如果采用@classmethod修饰,则不用传入参数c,可以用下面方式调用:
class MyClass():
    @classmethod
    def thisIsClassMethod(cls,parameter):
        print "this is a class method"
        print cls.__name__
        print type(cls) #打印类型为classobj


if __name__ == "__main__":
    MyClass.thisIsClassMethod(None) #不用与对象绑定
    print type(MyClass)

2) property修饰符

被property修饰符修饰的方法可以像属性一样被访问,如

class MyClass:
    def __init__(self,num):
        self._Num = num
    @property
    def Num(self):
        return self._Num

if __name__ == "__main__":
    c = MyClass(100)
    print c.Num   #注意,这里的访问形式看起来像是访问一个属性,但其实是一个方法

3) staticmethod修饰符

被staticmethod修饰符的表示这是一个类的静态方法,可以被类直接调用,与@classmethod的区别在于classmethod对应的方法的第一个参数为cls,为类的类型,而staticmethod不是
如下:
class MyClass:
    @staticmethod
    def thisIsStaticMethod():
        print "This is static method"

if __name__ == "__main__":
    MyClass.thisIsStaticMethod()
阅读(825) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~