python的实例属性和静态属性_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()

825729-20180113095349863-1588437107.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值