跳转至

四、修改和增加类属性

1、从内部增加和修改类属性

来,我们先来温习一下类的结构。

┌─────────────────┐
│ 类               │
│  ┌───────────┐  │
│  │ 变量 1     │  │
│  │ 变量 2     │  │
│  │ 变量 3     │  │
│  │ ...        │  │
│  └─────┬─────┘  │
│        +        │
│  ┌─────┴─────┐  │
│  │ 函数 1     │  │
│  │ 函数 2     │  │
│  │ 函数 3     │  │
│  │ ...        │  │
│  └───────────┘  │
└─────────────────┘

看着这个结构,提一个问题,如何修改类属性,也就是类里面的变量?

从类结构来看,我们可以猜测,从类方法来修改,也就是从类内部来修改和增加类属性。

看下具体的实例:

class ClassA():
    var1 = '两点水'

    @classmethod
    def fun1(cls):
        print('原来的 var1 值为: ' + cls.var1)
        cls.var1 = input('请输入修改 var1 的值: ')
        print('修改后 var1 值为: ' + cls.var1)
        cls.var2 = input('新增类属性 var2 ,请为它赋值为: ')
        print('修改后 var2 值为: ' + cls.var2)


ClassA.fun1()

输出结果如下(绿色字的为我输入的值):

原来的 var1 值为: 两点水
请输入修改 var1 的值: 三点水
修改后 var1 值为: 三点水
新增类属性 var2 ,请为它赋值为: 四点水
修改后 var2 值为: 四点水

这里还是强调一下,例子还是要自己多写,不要只看,自己运行, 看效果。多想。

2、从外部增加和修改类属性

我们刚刚看了通过类方法来修改类的属性,这时我们看下从外部如何修改和增加类属性。

例子如下:

class ClassA():
    var1 = '两点水'

    @classmethod
    def fun1(cls):
        print('var1 值为: ' + cls.var1)


ClassA.fun1()
ClassA.var1 = input('请输入修改 var1 的值: ')
ClassA.fun1()

ClassA.var2 = input('请输入新增属性 var2 的值: ')
print(ClassA.var2)

输出结果如下:

var1 值为: 两点水
请输入修改 var1 的值: 三点水
var1 值为: 三点水
请输入新增属性 var2 的值: 四点水
四点水