Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法

Posted xushukui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法相关的知识,希望对你有一定的参考价值。

属性分为实例属性与类属性
方法分为普通实例方法,类方法,静态方法

Python的静态方法和类方法都可以被类或实例访问,两者的区别还是很明显的:
1)静态方法无需传入self参数,类方法需传入代表本类的cls参数;
2)从第1条,静态方法是无法访问实例属性的,而类方法也同样无法访问实例变量,但可以访问类属性;
3)静态方法有点像函数工具库的作用,而类方法则更接近类似Java面向对象概念中的静态方法。

#!/usr/bin/python
#-*-coding:utf-8 -*-

class Test(object):
    val1 = "我是类属性val1"

    def __init__(self):
        self.name = "我是实例属性self.name"
        print "-"*30

    def test1(self):
        print "tes1"
        print "我是普通实例方法"
        print "肯定能调用类属性",Test.val1,
        print "我被test1调用了"
        print "还能调用实例属性",self.name, 
        print "我被test1调用了"
        print self 
        print "-"*30

    @classmethod
    def test2(cls): #必须传入cls,以区别和其他方法
        print "test2"
        print "我是类方法"
        print "我可以调用类属性,但是不能调用实例属性"
        print Test.val1, 
        print "我被test2调用了"
        print cls 
        #print self.name  不能调用实例属性,否则会报错,静态方法也一样
        print "-"*30

    @staticmethod 
    def test3(): #静态方法可以不用带参数
        print "test3"
        print "我是静态方法"
        print "可以调用类属性,但是不能调用实例属性"
        print Test.val1,
        print "我被test3调用了"
        print "-"*30

if __name__ == "__main__":
    t = Test()
    t.test1()
    t.test2()
    t.test3()

以上是关于Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法的主要内容,如果未能解决你的问题,请参考以下文章

Python3 之 类属性与实例属性

类变量与实例变量析构函数私有属性与私有方法

玩转Python类的(私有)属性与方法的使用

Python学习10 内置属性 对象属性 类属性 私有属性 私有方法 对象方法 类方法 静态方法

面向对象的成员: 实例变量 类变量 实例方法 类方法 静态方法 属性 私有

python中类对象实例对象类属性实例属性类方法实例方法静态方法