类的命名空间

属性

类里面可以定义两种属性:静态属性和动态属性。

通过实例来看下:

class Course:
    language = '中文'#静态属性
    def __init__(self,teach,course_name,period,price):
        self.teach = teach
        self.course_name = course_name
        self.period = period
        self.price = price
Course.language = '英语'#修改静态属性
print(Course.language)
python = Course('套你大象','python','9天',1000000)
print(python.language)#类中的静态变量可以被对象和类调用。

当我们在创建一个类的时候,我们是实例化对象的时候。优先级是先从对象本地开始找变量的,如果在对象中找不到,则会在对应的类中去找。所以无论是使用类或者对象都可以找到静态对象。

但是当我们使用类去操作对象时就不行了,因为他们之间时单项的。

注意:对于不可变的数据类型来说,类变量最好用类来操作。因为如果你使用对象对静态属性进行修改之后,你将再也调不到类里面的对于的静态属性了。

对于可变数据类型来说,例如列表。

对列表中的值进行修改不会改变列表的内存地址,只会改变内部元素的内存地址。不会影响从对象到类的指针。所以使用类和对象去修改是共享的,赋值是独立的。赋值就是将language这个属性进行重新赋值,直接改变从对象到类的指向地址。

原文地址:https://www.cnblogs.com/zly9527/p/11538032.html