静态方法

class Student(object):
    sum = 0

    def __init__(self,name,age): # 在实例方法中,cls表示对象本身
        self.name = name
        self.age = age
        self.plus_sum()
    """
    1. 如何区分类方法和实例方法?
       类方法必须有装饰器 @classmethod
    2. 疑问: self 和这里的 cls(class简写)是一个东西吗?
       是的,前面说了self可以随便命名,为示区分分类方法和实例方法,官方推荐使用cls
    3. 类方法的作用?
       专门用来操作类变量 
       说明: 类方法和类对象没有什么直接关系 
    """
    @classmethod
    def plus_sum(cls): # 在类方法中,cls表示类本身
        cls.sum += 1
        print("当前学生总数为:" +str(cls.sum))
        pass

    """
    静态方法:方法上面加上 @staticmethod 装饰器
    使用: 对象和类都可以调用
    注意: 静态方法没有this指针(所以定义的时候也不用传入self),所有不能用self访问,否则报错
    """
    @staticmethod
    def add(x,y):
        print("this is static method")
        print("访问类变量, sum:"+str(Student.sum))
        pass

s1 = Student("张三",1)     
s1.add(1,2)
Student.add(1,2)
当前学生总数为:1
this is static method
访问类变量, sum:1
this is static method
访问类变量, sum:1

results matching ""

    No results matching ""