【学习笔记】python类的静态方法、类方法

个人理解笔记,可能说的不会很详细,也可能有错,欢迎指出。
先上代码,正好使用上一个类的继承代码测试作实例。

class person():
    xiaomin = 'Tom'
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex
        self.xiaomin = 'lili'
    def tell(self):
        print('i am person.')
    @staticmethod
    def show():
        print('i am staticmethod.')

    @classmethod
    def showMyself(cls):
        cls.show()
        print(cls.xiaomin)
#父类继承
class student(person):
    def __init__(self,name,age,sex,student_id):
    #初始化,有两种方式
        #person.__init__(self,name,age,sex)
        super(student,self).__init__(name,age,sex)
        self.s_id = student_id
    def tell(self):
    #父类函数重构
        print('i am student.')


def main():
    s = student('limei',25,'woman','20151456931')
    s.showMyself()
    print(s.xiaomin)
    #print(person.xiaomin)

if __name__=='__main__':
    main()

先说个人理解吧,对于类的内部,个人认为有两层。
第一层:class下的所有函数或者变量,该层在未进行__init__实例化是可用类名.属性进行访问的,如代码中的xiaomin。
第二层:__init__下的属性,也就是self.属性,该域下的必须进行实例化才能进行实例名.属性进行访问,即__init__中的self.name,self.age等。

静态方法:定义在类函数的内部,使用@staticmethod声明,表示下一个函数为静态方法函数。该函数的特性:参数不需self,无法操作内部self.属性或函数,仅作与类内部变量属性无关无关的通用代码包装整合。
类方法:定义在类函数的内部,使用@classmethod声明,表示下一个函数为静态方法函数。该函数的特性:参数必须带cls,指向该类本身,无法操作内部self.属性,但是可以操作class下的函数及变量,属于第一层。即,访问cls.xiaomin、cls.show()可以,但无法通过cls.name访问定义在__init__内的name属性。并且可以直接通过类名.进行调用而无需实例化。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值