概念
类
一类抽象的事物,是描述了一类事物有哪些属性或者行为,但不是具体——模子。
实例
一个依托于类的规范存在的,被赋予了具体属性值的实际存在的物体。
对象
就是实例,实例的另外一个名称,相当于别名。
实例化
由一个类产生一个实例/对象的过程。
创建一个类用class,类名通常用大写字母开头。
类中可以存放两个东西:
静态属性(变量)
country = ‘China’
动态属性
def func(self):
pass
其中self为形参,也可以为其他名字,只是大家习惯使用self,也就成了大家默认的可以改变的但又大家遵守的一个东西。
类名可以做两件事情:
查看静态属性和动态属性
print(Person.Country) # 变量的值
print(Person.func) #方法的地址
Person.func(0) # 使用Person调用方法的时候self也是需要传的参数,不能直接调用。
类名.__dict__ 查看内置的对象
创造一个对象 对象 = 类名()
obj = Person() 就是创造一个对象了
对象 = 类名()
在实例化的过程中会自动的触发__init__方法.
命名空间和内存地址以及创造一个对象的时候到底发生了什么.
首先要创造一个对象
会自动的触发__init__,将创造出来的对象的地址传给self
执行init中的代码
将self指向的地址再返回给调用者
当程序运行起来的时候,会加载一个缩进内的代码,在此时会先为这个类创建一个空间,然后在这个空间中开辟一块地方存放一个缩进内的变量和方法.
以下标号为执行顺序标号:
对象名可以调用静态属性
对象名可以调用方法
对象:
属性——具体的值
方法——行为
对象与对象之间:
属性值截然不同
行为都是相近的
对象可以找到类,但是类找不到对象,这是一个单向关系。
静态变量之U所以出现是因为他是所有对象都共享的值。
调整静态变量的值:直接用类名去调整是最准确的
对象对一个静态变量重新赋值的过程实际上是在对象所在的内存空间中添加了一个同名属性而已。
方法并没有真正存储在对象的空间中,之所以能找到,是因为每一个对象在创建之初都有一个执行类的指针指向类的内存空间。
类名:
查看修改静态属性
实例化
对象名:
查看对象的属性
调用方法
对象使用名字的特点:自己有的时候使用自己的,自己没有的时候使用类中的。