python入门——面向对象编程,类(class)介绍

from 缪雪峰 python3入门

这里说一下自己学习python的感受,当初找了本书看,python简明教程,因为只是当作语言工具看,看了一个星期把代码的数据结构看完,就没有再看了,后面自己动手写爬虫的时候,特别困难,本身基础就不够,现在我发现学习语言最好的就是你去用它。不断地去用,理解代码的魅力。我是很喜欢代码的感觉。很舒服。整个8月份会不断介绍python数据结构和python的基础语法



一、这里说下:类class

1、定义类:python中定义类是通过关键字class:

python入门——面向对象编程,类(class)介绍

结构:class接类名,即Student,类名首字母大写,object表示该类从哪个类继承下来的,如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类。

2、创建实例:通过Student()创建。

python入门——面向对象编程,类(class)介绍

变量bart指向的就是一个实例Student()Student本身是一个

可以*地给一个实例变量绑定属性,比如,给实例bart绑定一个name属性bart.name = ‘Bob’

3、方法

除了按照上面的绑定属性外,我们可以创建实例的时候把属性填进去,这里用到 _init_ 方法。、

python入门——面向对象编程,类(class)介绍

注意到__init__方法的第一个参数永远是self表示创建的实例本身,因此在__init__方法内部,可以把各种属性绑定到self,因为self就指向创建的实例本身

有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去。

普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self,并且,调用时,不用传递该参数




4、数据封装:

面向对象编程的一个重要特点就是数据封装。在上面的Student类中,每个实例就拥有各自的namescore这些数据。我们可以通过函数来访问这些数据,比如打印一个学生的成绩:

python入门——面向对象编程,类(class)介绍

但是,既然Student实例本身就拥有这些数据,要访问这些数据,就没有必要从外面的函数去访问,可以直接在Student类的内部定义访问数据的函数。这些封装数据的函数是和Student类本身是关联起来的,我们称之为类的方法。

python入门——面向对象编程,类(class)介绍

5、封装的好处:

   5.1 调用容易,我们不需要直到内部的细节(黑盒)。

   5.2 可以添加新的方法,比如给Student类添加,get_grade。(定义方法和函数的区别就是方法的第一个参数是self,调用的时候,在实例变量上直接调用)

python入门——面向对象编程,类(class)介绍

6、总结

类是创建实例的模板,而实例则是一个一个具体的对象,各个实例拥有的数据都互相独立,互不影响;

方法就是与实例绑定的函数,和普通函数不同,方法可以直接访问实例的数据;

通过在实例上调用方法,我们就直接操作了对象内部的数据,但无需知道方法内部的实现细节。

和静态语言不同,Python允许对实例变量绑定任何数据,也就是说,对于两个实例变量,虽然它们都是同一个类的不同实例,但拥有的变量名称都可能不同。



二、Class内部访问限制【需要再更】


三、继承和多态【需要更新】


四、实例属性和类属性

由于Python是动态语言,根据类创建的实例可以任意绑定属性。

直接再class中定义属性,属于类属性,虽然是属于类的,但是所有的实例都可以访问

但是,实例属性的优先级比类属性高,当你给实例绑定值得时候,会屏蔽掉类属性,但是不会消失。

python入门——面向对象编程,类(class)介绍