目录
1. pip工具的使用
2. 自定义模块(本质是py文件)
2.1 使用方法1 import 模块名
2.2 使用方法2 from
3. 面向对象---类
3.1 类的介绍
3.2 类的定义
3.3 self关键字
3.4 构造函数和析构函数(也叫魔术方法)
3.4.1 构造函数
3.4.2 析构函数
3.5 类属性和对象属性
3.5.1 类属性的访问
3.5.2 对象属性的访问
3.6 修改类属性值
3.7.1 子类继承父类
3.7.2 带构造函数的继承
3.7.3 多继承
3.8 类方法和静态方法
3.8.1 @classmethod 类方法
3.8.2 @staticmethod 静态方法
3.9 私有属性和私有方法
3.9.1 私有属性及其访问
3.9.2 类的私有方法及其访问
3.10 多态
pip是专门用来安装和卸载python相关扩展的工具,除此外在pycharm编译器上也可以安装。
类的实例化就叫对象,与c++中类似。
python: class 类名():
类体
c++ class 类名{
}
python类的实例化与c++略有区别,但通过对象访问类的成员,python和c++一样
self 表示的是当前对象,哪个对象调用类的函数,self就表示哪个对象
作用和c++的构造函数作用差不多,都是对类的成员初始化,但python中,类的对象要初始化的成员写在构造函数__init__(self, 成员1,成员2) 的参数列表中,构造函数名以“两个下划线开始”
当类的对象被销毁时触发,函数名规定为__del__(self)
类属性定义在类体中,对象属性在构造函数的参数列表中
通过类名和对象名字都可以访问到类的属性
对象的属性只能通过对象名字去访问,不能通过类名去访问
类的属性: 通过类修改类的属性时,对所有的对象都生效,通过对象修改类的属性时,只是动态地给当前对象添加一个新属性,并不能修改类属性,其它对象访问类属性时,还是原来的值。
对象的属性: 通过对象和类都可以修改对象的属性,但它们在内存中不是同一个
3.7 面向对象的继承
#父类
class person():
def __init__(self,name,age) :
self.name = name
self.age = age
def say():
print("说话的方法")
class boy(person):
#方法 1.子类构造函数中调用父类的构造函数,去初始化那些从继承父类的属性
def __init__(self,name,age,high): #子类构造函数参数列表中先写父类的属性,再写子类自己的属性
# person.__init__(self,name,age) #初始化从父类继承来的属性
#方法 2.隐式继承父类构造函数
super().__init__(name,age) #super不带参数 super(person,self)
self.high = high
evan = boy("张三",28,168)
print(evan.name,evan.age,evan.high)
运行结果:
张三 28 168
多继承与单继承原理一样,只需要把单继承的步骤多做一遍就行
class 子类名(父类1,父类2):
1.子类构造函数 依次调用父类的构造函数初始化从父类那里继承来的成员
2.接着初始化子类自己的成员
如果一个类没有继承,则默认父类是object,这个可写,也可省略不写。
用 @classmethod 装饰器修饰的成员函数叫做类方法,,有一个默认参数cls,cls代表的是当前类,可以通过类名和对象名调用
使用@staticmethod 修饰的成员函数叫静态方法,也可以通过类名和对象名调用。
定义时都是以两个下划线开头 __
只能在类的内部访问,比如类的成员方法中,不能在外部访问。
也只能在类的内部的public方法中才能访问,并且要满足一定的条件才能访问
最简单的多态,子类对父类函数的重写
严格意义上的多态体现,把一个类当作参数,传给另一个类的成员函数,当这个成员寒湖是运行时,不同的类参数,就会得到不同的结果,让具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容(功能)的函数,多态就是一个函数接口,可以实现多种功能。
这里的animal就是一个类,传入不同的类feed就能实现不同的功能。