python-类属性、类方法、静态方法

类属性:
  写在init外面,定义时要给它赋值,外面定义一个类时,类属性也在类相继开辟一个地址,类属性是公共的,
无论哪个子类或者本身类修改属性值,他的值都可以改变,这和对象属性不同,
举个例子来说,类属性就是一个家庭的资金,而对象属性就是家庭里某个人的钱,每个人都可以用家庭的资金,每用一点就改变金钱的值,
一个人使用了家庭的钱后另一个人跟着去使用的话,那时候的钱就是前面一个人使用后还剩的钱数,而家庭里每个人的钱是互不干预的,
不管你用自己的钱多少,和其他人没有任何关系,其他人的钱不会改变。

类方法:
  方法前面加@classmethod,方法里面的参数不是self,而是cls,cls是不定的,这个参数名可以随便写,类方法可以调用自己的类属性,
这里修改了类属性的值之后,后面再去输出类属性的值又将会改变。
 
 
静态方法:
前面加@staticmethod,用处;当有些东西写在一个类里面不合适时就可以写在静态方法内,无需参数,和类没有关系,
也和对象没有关系,可通过类和对象调用
       
class test:
    # 类属性,
    uname='Gscsd'
    def __init__(self,name):
        # 这里不再是对象属性,而是类属性,self改成了test
        test.uname=name
    def cuse(self):
        print('%s'%self.uname)
   # 类方法前面要加这个,而且函数里面参数不再是self,而是其他,可写为cls
    @classmethod
    def cmethod(cls):
        cls.uname='万古至尊'
        print('这是一个类方法')

    @staticmethod
    def smethod():
        # 用处;当有些东西写在一个类里面不合适时就可以写在静态方法内,
        # 无需参数,也不依靠类,可通过类和对象调用
        print('这是一个静态方法')
# 这里可以直接输,不用新建对象也可以,因为他是类属性和对象
test.cmethod()
print(test.uname)

t=test('李云霄')
t.cmethod()
# 这里不是类属性,而是对象里面重新开辟出来的对象属性
# t.uname='古飞扬'
t.cuse()
tt=test('古飞扬')
print(test.uname)

t.cuse()

》》》这是一个类方法 》》》万古至尊 》》》这是一个类方法 》》》万古至尊 》》》古飞扬 》》》古飞扬

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值