类方法

class Student(object):
    sum = 0

    def __init__(self,name,age):
        self.name = name
        self.age = age
        self.__class__.sum += 1
        print("当前的学生总数为:",self.__class__.sum)

s1 = Student("张三",1)        
s2 = Student("李四",2)    
s3 = Student("王五",3)    
s4 = Student("赵六",4)
当前的学生总数为: 1
当前的学生总数为: 2
当前的学生总数为: 3
当前的学生总数为: 4
class Student(object):
    sum = 0

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

s1 = Student("张三",1)   
Student.plus_sum()    # 也可以用 s1.plus_sum() 同样的效果,但是不推荐
# 在python既然把类和对象分的这么清楚,那我们最好用类调用类的 对象调用对象的
s2 = Student("李四",2) 
Student.plus_sum()     
s3 = Student("王五",3)
Student.plus_sum()      
s4 = Student("赵六",4)
当前学生总数为:1
当前学生总数为:2
当前学生总数为:3
当前学生总数为:4
class Student(object):
    sum = 0

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

s1 = Student("张三",1)     
s2 = Student("李四",2)    
s3 = Student("王五",3)   
s4 = Student("赵六",4)

results matching ""

    No results matching ""