阿里云天池Python训练营
本节主要介绍python中的类与对象,并针对相关用法进行展开说明。其中拓展了需要掌握及区别的内容,对于类的用法及对象的含义需重点掌握。
一、类与对象
1. 对象 = 属性 + 方法
类定义对象的结构 以类为模板创建对象(对象是类的实例)
类不但包含方法定义 还包含所有实例共享的数据
封装:信息隐蔽技术
class 类名 :
类的实现
类的名称以大写字母开头
继承:子类自动共享父类之间数据和方法的机制
子类构造函数基础父类构造函数过程如下:
实例化对象c ----> c 调用子类__init__() ---- > 子类__init__()继承父类__init__() ----- > 调用父类 __init__()
多态:不同对象对同一方法响应不同的行动
2. self 是什么?
类的方法必须有一个额外的第一个参数名称 按照惯例名称是 self
调用方法时 无需明确提供与参数 self 相对应的参数
3.魔法方法
如果对象实现某个魔法方法 该方法会在特殊的情况下自动调用
类的魔法方法:
__init__(self[, param1, param2...])
类实例化时自动调用
4.公有和私有
私有变量:在变量名或函数名前加上__(两个下划线)
私有属性:类外部无法直接进行访问
私有方法
5. 继承
派生类的定义:
class 派生类名(模块名1.基类名1,模块名2.基类名2, 模块名3.基类名3):
类的实现1
.
类的实现N
基类名:必须与派生类定义在一个作用域内 (可以类或表达式)
如果子类中定义与父类同名的方法或属性 自动覆盖父类对应的方法或属性
调用父类方法:
super().__init__()
解决多重继承问题
支持多继承的形式 但一般不使用
父类顺序:多重继承时 若是父类中有相同的方法名 而在子类使用时未指定时 从左到右在不同父类中查找
6. 类、类对象和实例对象
类对象:创建一个类 也是一个对象 只有一个
class 类名(object):
pass
实例对象:通过实例化类创建的对象 可以有多个
类属性:类中方法外面定义的变量(属于类对象 多个实例对象间共享)
类属性通过 (类名.类属性)调用
实例属性:与具体的实例对象有关 (不同实例对象间属性不共享) 值属于调用self的对象
属性与方法名相同 属性会覆盖方法
7. 什么是绑定?
绑定:方法需要有实例才能被调用
对象的数据属性通常存储在名为.__ dict__的字典中 访问__dict__ 利用 vars()获取.__ dict__
8.内置函数(BIF)
issubclass(class, classinfo)
判断class是否是classinfo的子类
classinfo可以是类对象的元组 只要class是其中任何一个子类 返回True
一个类是其自身的子类
isinstance(object, classinfo)
判断对象是否已知类型
若object不是对象 永远返回False
classinfo不是类或者由类对象组成的元组 抛出TypeError
hasattr(object, name)
判断对象是否包含对应的属性
getattr(object, name[, default])
得到一个对象属性值
setattr(object, name, value)
设置属性值 属性不一定是存在的(对应函数 getattr())
delattr(object, name)
删除属性
class property([fget[, fset[, fdel[, doc]]]])
在新式类中返回属性值
fget:获取属性值
fset:设置属性值
fdel:删除属性值
doc:属性描述信息