Python_06类和对象,类和对象相关的BIF

2020/07/31

1、初识类

用类创建对象,这个创建的对象也叫这个类的实例,即实例对象;类名是以大写字母开头,函数是以小写字母开头的
Python_06类和对象,类和对象相关的BIF

2、面向对象特征

(1)封装

信息隐蔽技术
Python_06类和对象,类和对象相关的BIF

(2)继承

------继承是子类自动共享父类之间数据的方法的机制
语法:
class DerivedClassName(BaseClassName):

子类可以继承它父类的所有属性和方法
Python_06类和对象,类和对象相关的BIF
使用super函数
Python_06类和对象,类和对象相关的BIF

-------多重继承(建议少用)
语法:
class DerivedClassName(Base1,Base2,Base3):

Python_06类和对象,类和对象相关的BIF
组合
Python_06类和对象,类和对象相关的BIF

(3)多态

不同对象对同一方法响应不同的行动
Python_06类和对象,类和对象相关的BIF

3、类和类对象和实例对象

Python_06类和对象,类和对象相关的BIF
关系示意图
注意:
类里面定义的属性都是静态属性;如果属性名和方法名相同,属性会覆盖方法
Python_06类和对象,类和对象相关的BIF

4、什么是绑定?

Python 严格要求方法需要有实例才能被调用,这种限制就是Python的绑定概念
Python_06类和对象,类和对象相关的BIF

5、self是什么?

有同一个类可以生成很多个对象,这些对象很相似因为都是来源于一个类的属性和方法,当一个对象的方法被调用的时候,对象会将自身作为第一个参数传给self参数,接收到sef后,Python就知道是哪一个对象在调用这个方法
举例:
Python_06类和对象,类和对象相关的BIF

6、init(self) 方法

init方法称为构造方法,体现在实例化一个对象的时候,这个方法就会在对象被创建的时候自动调用。

实例化对象的时候可以传入参数,这些参数会自动的传入到init方法中,我们可以通过重写这个方法来自定义对象初始化操作
举例:
Python_06类和对象,类和对象相关的BIF

7、共有和私有

类的属性和方法一般是共有的;在Python中定义私有变量只需要在变量名或函数名前加上”__“两个下划线,那么这个函数或变量就会为私有的了。
Python_06类和对象,类和对象相关的BIF
如何访问私有属性?
Python_06类和对象,类和对象相关的BIF
name mangling(名字改编,名字重整)

其实只是Python将 __开头的变量概率名字而已,改成了_类名__变量名
Python_06类和对象,类和对象相关的BIF
Python_06类和对象,类和对象相关的BIF

类和对象相关的BIF

8、类和对象相关的BIF

(1)issubclass(class,classinfo)
如果第一个参数class时第二个参数classinfo的一个子类,那么就返回True
注意:

  1. 一个类被认为时期自身的子类
  2. classsinfo 可以是类对象组成的元组,只要class于其中任何一个候选类的子类,则返回True
    举例:
    Python_06类和对象,类和对象相关的BIF
    (2)isinstance(object,classinfo)

检查一个实例对象object是否属于一个类classinfo

注意:

  1. 如果第一个参数不是对象,则永远返回False
  2. 如果第二个参数不是类或者由类对象组成的元组,会抛出一个TypeError异常
    举例:
    Python_06类和对象,类和对象相关的BIF
    (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
    通过属性设置属性;第一个参数是获取属性的方法,第二个参数是设置属性的方法,第三个参数是删除属性的方法
    Python_06类和对象,类和对象相关的BIF