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

python@staticmethod&@classmethod&property的理解

时间:2016-05-22 00:36:45      阅读:359      评论:0      收藏:0      [点我收藏+]

标签:

 

 

#!/usr/bin/evn python
#_*_coding:utf8_*_


class myClass(object):
    age = 30
    def __init__(self,name):
        self.name = name
    def sayhi1(self):#只可实例中调用
        print("sayhi1...name:{}.age:{}".format(self.name,self.age))
    @staticmethod  #静态方法不可访问构造方法中的变量,可在实例中调用,也可类中调用
    def sayhi2(age=10):#不可以传self,即不可访问self.name,self.age
        print("sayhi2..@staticmethod..{},{}".format(myClass.age,age))
    @classmethod #类方法不可以访问__init__构造方法中的变量,可在实例中调用,也可以类中调用
    def sayhi3(self,test=实例中调用):#可传self,只能访问类变量,不可访问构造方法中的变量
        print("sayhi3..@classmethod..age:{},{}".format(self.age,test))
    @property #属性方法:必须要返回值,只可当属性使用,不可调用。把一个方法变成静态属性给予访问,实例中可访问
    def sayhi4(self,name=实例中..):#可访问类变量及构造方法中的变量
        print("sayhi4..@property..name:{},age{},{}".format(self.name,self.age,name))
        return self.name,self.age
    @property
    def sayhi5(self):
        print("sayhi5..@property....age{}".format(self.age))
        return self.age




if __name__ == __main__:
    m = myClass(dodo)
    m.sayhi1()
    #myClass.sayhi1()
    print("-----@staticmethod调用-------")
    m.sayhi2(实例中调用...)
    m.sayhi2()
    myClass.sayhi2(类中外部调用...)
    myClass.sayhi2()
    print("-----@classmethod调用--------")
    m.sayhi3()
    myClass.sayhi3(类中调用)
    print("-----@property调用-----------")
    print(m.sayhi4)
    print(myClass.sayhi4)
    print(myClass.sayhi5)
    print(m.sayhi5)

 

python@staticmethod&@classmethod&property的理解

标签:

原文地址:http://www.cnblogs.com/dodoye/p/5515864.html

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