Python面向对象
文章目录
Python内置对象
- __dict__ : 类的属性(包含一个字典,由类的数据属性组成)
- __doc__ :类的文档字符串
- __name__: 类名
- __module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)
- __bases__ : 类的所有父类构成元素(包含了一个由所有父类组成的元组)
面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。继承完全可以理解成类之间的类型和子类型关系。
类的继承在python中的一些特点:
- 在继承中基类的构造(__init__()方法)不会被自动调用,它需要在其派生类的构造中亲自专门调用。
- 在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。区别于在类中调用普通函数时并不需要带上self参数
- Python总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)。
类的继承:
|
|
- 类的方法重写:
|
|
- 检测父类和子类:
- issubclass() - 布尔函数判断一个类是另一个类的子类或者子孙类,语法:issubclass(sub,sup)
- isinstance(obj, Class) 布尔函数如果obj是Class类的实例对象或者是一个Class子类的实例对象则返回true。
- 基础重载方法:
- __init__ ( self [,args…] )构造函数,简单的调用方法: obj = className(args)
- __del__( self ),析构方法, 删除一个对象,简单的调用方法 : dell obj
- __repr__( self ),转化为供解释器读取的形式,简单的调用方法 : repr(obj)
- __str__( self ),用于将值转化为适于人阅读的形式,简单的调用方法 : str(obj)
- __cmp__ ( self, x ),对象比较,简单的调用方法 : cmp(obj, x)
- 类属性与方法
- 类的私有属性
- __private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。 类的方法
- 在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数 类的私有方法
- __private_method:两个下划线开头,声明该方法为私有方法,不能在类地外部调用。在类的内部调用 self.__private_methods
- Python不允许实例化的类访问私有数据,但你可以使用 object._className__attrName 访问属性