zoukankan      html  css  js  c++  java
  • 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()
    

  • 相关阅读:
    制作A4纸打印的网页像素大小设置(转)
    关于Vue.use()详解
    Vue的axios如何全局注册
    JS中的apply,call,bind深入理解
    JS异步编程 (2)
    JS异步编程 (1)
    彻底搞清楚javascript中的require、import和export(js模块加载规范的前世今生)
    IPv6地址分类及表示方法
    SublimeText3追踪函数工具CTags设置及使用
    转-编写CGI小结
  • 原文地址:https://www.cnblogs.com/nyist-xsk/p/8278430.html
Copyright © 2011-2022 走看看