美文网首页
Python入门与进阶(9-10)

Python入门与进阶(9-10)

作者: buaishengqi | 来源:发表于2018-05-07 10:45 被阅读8次

    9-10 类方法
    看看下列思维导图


    Python类.png

    本节课重点讲述类方法

    # 实例方法里操作类变量,如让学生的总数加1
    class Student():
        sum = 0  #一个班级学生的总数
        name = '小鱼'
        age = 0 
        def __init__(self,name,age): 
            
            self.name = name
            self.age = age  
            self.__class__ .sum += 1 #这是在构造函数里的操作
            print('当前班级学生总数为:' + str(self.__class__.sum))         
            # print(self.__class__.sum += 1)   #每次创建一个对象,说明班级多了一个学生
            
            
        def do_homework(self):
            print('homework')
         
    student1 = Student('石敢当',18)
    student2 = Student('喜小乐',18)
    student3 = Student('西门庆',18)
    # 打印结果如图1所示
    
    # 第二种方法也可以实现实例方法的类操作变量,如下
    class Student():
        sum = 0  #一个班级学生的总数
        name = '小鱼'
        age = 0 
        def __init__(self,name,age): 
            
            self.name = name
            self.age = age  
                    
            # print(self.__class__.sum += 1)   #每次创建一个对象,说明班级多了一个学生
            
            
        def do_homework(self):
            self.__class__ .sum += 1  #在普通函数里也可以实现这样的操作
            print('当前班级学生总数为:' + str(self.__class__.sum))  
            print('homework')
         
    student1 = Student('石敢当',18)#到时再调用的时候,应该使用如下调用方法
    student1.do_homework()
    student2 = Student('喜小乐',18)
    student2.do_homework()
    student3 = Student('西门庆',18)
    student3.do_homework()
    #打印结果如图2所示
    
    # 实例方法专门操作实例变量的,那么类方法也是专门操作类变量的,下面来看类方法操作类变量
    class Student():
        sum = 0  #一个班级学生的总数
        name = '小鱼'
        age = 0 
        def __init__(self,name,age): 
            
            self.name = name
            self.age = age  
            self.__class__ .sum += 1 #这是在构造函数里的操作
            print('当前班级学生总数为:' + str(self.__class__.sum))         
            # print(self.__class__.sum += 1)   #每次创建一个对象,说明班级多了一个学生
            
            
        def do_homework(self):
            print('homework')
            # 定义一个类方法的格式如下,@classmethod叫做装饰器
        @classmethod
        def plus_sum(cls):#实例方法用self,类方法用cls
            cls.sum += 1     #模仿实例方法的书写模式
            print(cls.sum)
         
    student1 = Student('石敢当',18)
    Student.plus_sum()   #调用的方法是在这样的
    student2 = Student('喜小乐',18)
    Student.plus_sum()
    student3 = Student('西门庆',18)
    Student.plus_sum()
    
    # 打印结果如图3,为什么会造成图3 的原因!!!因为在构造函数里有self.__class__ .sum += 1
    # 所以打印的结果就是图3这种,1,2,3,4,5,6
    # 类方法里的cls,也可以全部换成this等这样的,当然也可以换成self
    
    
    # 我们可以用类来调用类方法,我们可不可以用对象来调用类方法呢?答案是可以的
    # 看看下面的例子
    class Student():
        sum = 0  #一个班级学生的总数
        name = '小鱼'
        age = 0 
        def __init__(self,name,age): 
            
            self.name = name
            self.age = age  
            self.__class__ .sum += 1 #这是在构造函数里的操作
            print('当前班级学生总数为:' + str(self.__class__.sum))         
            # print(self.__class__.sum += 1)   #每次创建一个对象,说明班级多了一个学生
            
            
        def do_homework(self):
            print('homework')
            # 定义一个类方法的格式如下,@classmethod叫做装饰器
        @classmethod
        def plus_sum(cls):#实例方法用self,类方法用cls
            cls.sum += 1     #模仿实例方法的书写模式
            print(cls.sum)
         
    student1 = Student('石敢当',18)
    student1.plus_sum()#用对象来调用类方法,最好不要用!!!
    
    1.jpg 2.jpg 3.jpg

    相关文章

      网友评论

          本文标题:Python入门与进阶(9-10)

          本文链接:https://www.haomeiwen.com/subject/bhcdrftx.html