类的理解和运用
    函数和类的区别:

    类,最简单的方式就是:类是一个变量和函数的集合,如↓图Day2-2 - 图1

    由此我们可以看出类可以把变量和函数包括在一起。
    当然我们包装也不是毫无目的的包装,我们会把同性质的包装在一个类里,这样就方便我们重复使用。

    类定义语法格式如下:

    1. class ClassName():
    2. <statement-1>
    3. .
    4. .
    5. .
    6. <statement-N>

    这里可以看出,我们用‘class’语句来自定义一个,就好比我们用’def’来定义一个函数

    1. class ClassA():
    2. var1 = 100
    3. var2 = 0.01
    4. var3 = '两点水'
    5. def fun1():
    6. print('我是 fun1')
    7. def fun2():
    8. print('我是 fun1')
    9. def fun3():
    10. print('我是 fun1')

    ↑就是类的一个使用范例,里面的类名叫做ClassA,变量称之为属性‘var’,除此之外还有类方法‘fun’.

    如何调用类的属性和方法↓
    Day2-2 - 图2
    当我们想在同一类里面用类方法调用类属性时,需在类方法上打出@class(类)method(方法),用于声明下面的函数是类函数,这个步骤是不能省去的,否则则会显示出错。

    Day2-2 - 图3
    如果没有声明是类方法,方法参数中就没有cls , 就没法通过 cls获取到类属性。
    因此类方法,想要调用类属性,需要以下步骤:

    • 在方法上面,用 @classmethod 声明该方法是类方法。只有声明了是类方法,才能使用类属性
    • 类方法想要使用类属性,在第一个参数中,需要写上cls , clsclass 的缩写,其实意思就是把这个类作为参数,传给自己,这样就可以使用类属性了。
    • 类属性的使用方式就是cls.变量名

    记住喔,无论是@classmethod 还是cls ,都是不能省去的。
    省了都会报错。
    当想在类中增加元素时,则如下图,在方法后加入你所想增加的参数.
    Day2-2 - 图4
    当想修改类里面的变量(类属性)时,可以从类方法来修改,可以修改及增加你类里面的变量↓

    修改类属性
    print(‘原来的 var1 的值为: ‘ + cls.var1)
    cls.var1 = input(‘请输入修改 var1 的值: ‘)
    print(‘原来的 var1 的值为: ‘ + cls.var1)
    cls.var2 = input(‘请输入修改 var2 ,请为他赋值为: ‘)
    print(‘原来的 var2 的值为: ‘ + cls.var2)
    新增类属性
    ClassA.var3 = input(‘请输入新增类属型 var3 的值: ‘)
    print(ClassA.var3)
    类的实例化
    class ClassA(object):
    var1 = ‘两点水’
    def fun1(Self):
    print(‘var1 值为:’ = self.var1)
    # 实例化
    a = ClassA()
    # 实例化后使用里面的方法
    a.fun1()
    # 使用里面的属性
    print(a.var1)
    主要的不同点有:

    • 类方法里面没有了 @classmethod 声明了,不用声明他是类方法
    • 类方法里面的参数 cls 改为self
    • 类的使用,变成了先通过 实例名=类 的方式实例化对象,为类创建一个实例,然后再使用 实例名.函数 的方式调用对应的方法 ,使用实例名.变量名 的方法调用类的属性

    类属性的改变
    # 改变类属性

    ClassA.var1 = ‘三点水’
    # 重新打印实例化对象 a 的属性
    print(a.var1)
    当类属性改变事,实例属性也会跟着改变;反之实例属性改变时,类属性并不会跟着改变.
    # 打印类的属性值
    print(ClassA.var1)
    修改类方法
    # 修改类方法
    # 1.先要定义一个新函数
    def newFun1(self):
    print(‘hello python’)
    # 2.用新的函数替代老的函数,也就是[重写类方法]
    ClassA.fun1 = newFun1
    # 再次调用实例的方法
    a.fun1()
    newFun1()
    如上类方法改变时,实例方法也会跟着改变
    在这个例子中,我们需要改变类方法,就用到了类的重写。
    我们使用了类.原始函数=新函数 就完成了类的重写了
    但是要注意此处的赋值是替换而不是调用函数,所以不能加上括号.