python面向对象-类

来源:互联网 发布:如何自学软件测试 编辑:程序博客网 时间:2024/05/22 22:20

1.概念

python中的所有东西都是类,如:字符串类,整形类,它们都有自己的属性和方法属性:类里面的特性  不加()方法:类里面的函数  要加()类的实质是一种数据类型,类似于int、str等基本类型,不同的是它是一种复杂的数据类型。因为它的本质是类型,而不是数据,所以不存在于内存中,不能被直接操作,只有被实例化为对象时,才会变得可操作。类是对现实生活中一类具有共同特征的事物的抽象。

2.类的定义

基本形式:class ClassName(object):    Statement1.class 定义类的关键字2.ClassName 类名,类名的每个单词的首字母大写(驼峰规则)。3.object 是父类名,object 是一切类的基类。在python3中如果继承类是基类可以省略不写。方法的参数中第一个参数我们约定俗成的为 self 参数名,self 代表的是在类实例化后这个实例对象本身。初始化函数除了有 self 这个参数表示实例对象本身之外,其他的参数的定义也遵循函数的必备参数和默认参数一样的原则,必备参数就是在实例化是一定要传入的参数,默认参数就是在定义时可以给这个参数一个初始值。

3.类的实例化

基本形式:实例对象名 = 类名(参数)在实例化的过程中,self代表的就是这个实例对象自己。实例化时会把类名后面接的参数传进去赋值给实例,这样传进去的参数就成为了这个实例对象的属性。实例化的过程遵循函数调用的原则。在实例化时也必须个数和顺序与定义时相同(使用关键字参数可以改变传参的顺序)。当初始化函数定义时使用了默认参数时,在实例化时默认参数可以不传参,这时这个实例对象就会使用默认的属性,如果传了参数进去则会改变这参数值,实例化对象的属性就为你传进来的这个参数。isinstance(实例名,类名)判断一个实例是不是这个类的实例。

4.类和实例的属性

类属性    .类属性是可以直接通过“类名.属性名”来访问和修改。    .类属性是这个类的所有实例对象所共有的属性,    任意一个实例对象都可以访问并修改这个属性(私有隐藏除外)。    .对类属性的修改,遵循基本数据类型的特性:列表可以直接修改,字符串不可以,    所以当类属性是一个列表时,可通过任意一个实例对象对其进行修改。    但字符串类型的类属性不能通过实例对象对其进行修改。    当实例对不可变对象进行修改之后,会查找实例的类属性,不会查找类的属性,同时类的属性不会变。实例属性    .在属性前面加了 self 标识的属性为实例的属性。    .在定义的时候用的 self 加属性名字的形式,在查看实例的属性时    就是通过实例的名称+‘.’+属性名来访问实例属性。方法属性    .定义属性方法的内容是函数,函数的第一个参数是 self,代表实例本身。一些说明:    .数据属性会覆盖同名的方法属性。减少冲突,可以方法使用动词,数据属性使用名词。    .数据属性可以被方法引用。    .一般,方法第一个参数被命名为 self,这仅仅是一个约定,    self 没有特殊含义,程序员遵循这个约定。    .查看类中的属性和实例属性可以调用 __dict__ 方法返回属性组成的字典。    .Python 中属性的获取是按照从下到上的顺序来查找属性    .Python 中的类和实例是两个完全独立的对象    .Python 中的属性设置是针对对象本身进行的

5.类的私有变量

声明:在属性变量名前加上双下划线定义属性为私有属性特性:在Python中就算继承也不能相互访问私有变量,或者父类访问子类的私有属性也不可以在Python中,通过单下划线”_”来实现模块级别的私有化,一般约定以单下划线”_”开头的变量、函数为模块私有的,也就是说”from moduleName import *”将不会引入以单下划线”_”开头的变量、函数对于Python中的类属性,可以通过双下划线”__”来实现一定程度的私有化,因为双下划线开头的属性在运行时会被”混淆”(mangling)。_”和” __”的使用 更多的是一种规范/约定,没有真正达到限制的目的“_”:以单下划线开头只能允许其本身与子类进行访问“__”:双下划线的表示的是私有类型的变量。这类属性在运行时属性名会加上单下划线和类名。

6.数据封装

在类里面数据属性和行为用函数的形式封装起来,访问时直接调用,不需知道类里面具体的实现方法。

(学习笔记整理来自潭州 python 不动老师的课程内容)