Python_06类和对象,类和对象相关的BIF
2020/07/31
Python_06类和对象,类和对象相关的BIF
类
1、初识类
用类创建对象,这个创建的对象也叫这个类的实例,即实例对象;类名是以大写字母开头,函数是以小写字母开头的
2、面向对象特征
(1)封装
信息隐蔽技术
(2)继承
------继承是子类自动共享父类之间数据的方法的机制
语法:
class DerivedClassName(BaseClassName):
…
子类可以继承它父类的所有属性和方法
使用super函数
-------多重继承(建议少用)
语法:
class DerivedClassName(Base1,Base2,Base3):
…
组合
(3)多态
不同对象对同一方法响应不同的行动
3、类和类对象和实例对象
关系示意图
注意:
类里面定义的属性都是静态属性;如果属性名和方法名相同,属性会覆盖方法
4、什么是绑定?
Python 严格要求方法需要有实例才能被调用,这种限制就是Python的绑定概念
5、self是什么?
有同一个类可以生成很多个对象,这些对象很相似因为都是来源于一个类的属性和方法,当一个对象的方法被调用的时候,对象会将自身作为第一个参数传给self参数,接收到sef后,Python就知道是哪一个对象在调用这个方法
举例:
6、init(self) 方法
init方法称为构造方法,体现在实例化一个对象的时候,这个方法就会在对象被创建的时候自动调用。
实例化对象的时候可以传入参数,这些参数会自动的传入到init方法中,我们可以通过重写这个方法来自定义对象初始化操作
举例:
7、共有和私有
类的属性和方法一般是共有的;在Python中定义私有变量只需要在变量名或函数名前加上”__“两个下划线,那么这个函数或变量就会为私有的了。
如何访问私有属性?
name mangling(名字改编,名字重整)
其实只是Python将 __开头的变量概率名字而已,改成了_类名__变量名
类和对象相关的BIF
8、类和对象相关的BIF
(1)issubclass(class,classinfo)
如果第一个参数class时第二个参数classinfo的一个子类,那么就返回True
注意:
- 一个类被认为时期自身的子类
- classsinfo 可以是类对象组成的元组,只要class于其中任何一个候选类的子类,则返回True
举例:
(2)isinstance(object,classinfo)
检查一个实例对象object是否属于一个类classinfo
注意:
- 如果第一个参数不是对象,则永远返回False
- 如果第二个参数不是类或者由类对象组成的元组,会抛出一个TypeError异常
举例:
(3)hasattr(object,name)
测试一个对象里面是否由指定的属性
(attr = attribute : 属性)
(4)getattr(object,name[,default])
返回对象指定的属性值,如果不设置指定的参数就返回default否则会抛出AttributError的异常
(5)setattr(object,name,value)
和hasattr(object,name)对应,设置对象中指定属性的值,如果指定属性不存在,会新建一个属性并进行赋值
(6)delattr(object,name)
和setattr(object,name,value)是相反的,用于删除指定的属性,若属性不存在,则抛出AttributError的异常
(7)property(fget=None,fset=None,fdel=None,doc=None
通过属性设置属性;第一个参数是获取属性的方法,第二个参数是设置属性的方法,第三个参数是删除属性的方法