Python学习--类和对象

Posted 木九九

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习--类和对象相关的知识,希望对你有一定的参考价值。

一、几个概念

类:代表对象的集合。

对象:对象包括特性和方法。特性只是作为对象的一部分的变量,方法则是存储在对象内部的函数。所有对象都属于某一个类,称为类的实例。

方法:绑定到对象特性上面的函数称为方法。

封装:指向程序中的其他部分隐藏对象的具体实现细节的原则。

继承:一个类可以使一个或者多个类的子类。子类继承超类的所有方法,

子类:当一个对象所属的类是另外一个对象所属类的子集时,前者就被称为后者的子类,后者就是前者的的超类。

 

二、类

2.1 创建类

在创建类之前,先说两个概念。

新式类:创建新式类创建必须有一个父类,如果不指定,默认就是继承object。

旧式类:没有父对象的的类。

在Python3.0以后不存在旧式类,之前的版本,创建类的时候就需要指明继承新式类,在模块或者脚本开始的地方加上__metaclass__ = type。

 

class ClassName:
      类的帮助信息 #类文档字符串
       class_suite #类体

 

1.通过class语句可以创建一个类。

2.和定义函数类似,可以在类名下面加上关于类的帮助信息,通过ClassName.__doc__查看。

 

2.2 self说明

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

class test:
   def fun1(self):
      xxxx
   def fun2(self, par1, par2):
      xxxx

 

self代表的是对象自身,当然你可以取名不叫self,其它命名也可以。通过self,其它成员方法就可以访问要对其特效进行操作的对象本身了。

 

在调用方法时,无需显示的提供self这个参数。

 

2.3 私有化

为了让方法或者特性变成私有(从外部无法访问),只要在它的名字前面加上双下划线即可。

class Test:
    def __fun1(self):
       xxxx
    def fun2(self):
       self.__fun1()

如上述例子所示,__fun1从外界无法访问,但是在类的内部还是能使用。但是这个并不是真的无法访问,因为带双下划线的名字被_Test_fun1的形式。所以通过test._Test_fun1()形式还是能访问。

前面带有下划线的名字不会被带星号的import语句(from module import *)导入。

 

2.4 指定超类

class Test(object):
    xxxx

将其他类名写在class语句后面的圆括号里就可以指定超类。继承了超类会继承相应的方法,当然子类也可以重写,在子类里,和超类里同名的方法就会重写超类的方法。

 

issubclass(子类名,父类名)

可以检查一个类是否是另外一个的子类。

 

当然也可以通过属性__bases__去查看类的基类

isinstance(对象名,类名)

可以检查一个对象是否是一个类的实例

 

可以通过属性__class__查看对象属于哪个类

 

子类也可以继承多个超类,这叫多重继承。

class Test(object1,object2):
    xxxx

 

值得注意的是,当继承的多个超类里含有名字相同的方法,先继承的类中的方法会重写后继承的勒种的方法。

?

以上是关于Python学习--类和对象的主要内容,如果未能解决你的问题,请参考以下文章

python cookbook第三版学习笔记十二:类和对象创建新的类或实例属性

Python小白学习之路—类和对象列表列表相关功能

Python学习之旅--类和对象

Python学习9 面向对象 类和对象

python学习day11 面向对象编程 类和实例

python3 语法学习 类和继承