01-polymorphism 多态
02-operator overload 运算符重载
03-multiple inheritance 多继承
04-object memory management 对象的内存管理
05-the application of package 包的应用
01-polymorphism 多态
多态:就是一个事物有多种形态。继承就会产生多态
类的多态:通过过继承,同一个方法可以有多种实现
class Animal:
def shout(self):
print('嗷嗷叫!')
class Cat(Animal):
def shout(self):
print('喵喵叫!')
class Dog(Animal):
def shout(self):
print('汪汪叫!')
animal1 = Animal()
animal1.shout()
cat1 = Cat()
cat1.shout()
dog1 = Dog()
dog1.shout()
02-operator overload 运算符重载
需要对象进行运算操作的时候,进行运算符重载
类中可以通过实现相应的魔法方法,来实现对象的比较运算(>、<)和加减运算(+、-)
实现后就可以通过运算符'>'和'<'来判断对象的大小。通过运算符'+''-'来求两个对象的和与差
怎么重载
> -->__gt__
< -->__lt__
+ -->__add__
- -->__sub__
class Student:
def __init__(self, name='', age=0, score=0):
self.name = name
self.age= age
self.score = score
# 重载'>'符号
# 对象1(self)>对象2(other)
def __gt__(self, other):
# 怎么实现就看怎么判断大于的
return self.age > other.age
# 重载'<'符号
def __lt__(self, other):
return self.score < other.score
说明:如果大于比较和小于比较的内容是一样的,只需要重载其中一个符号就可以了
# 重载'+'
def __add__(self, other):
return self.score + other.score
#重载'-'
def __sub__(self, other):
return self.score - other.score
stu1 = Student('小明', 18, 90)
stu2 = Student('小花', 20, 80)
print(stu1 < stu2)
print(stu1>stu2)
print(stu1 + stu2)
print(stu1 - stu2)
03-multiple inheritance 多继承
**python支持多继承
class Animal:
def __init__(self, age=0, name=''):
self.age = age
self.name = name
class Fly:
def fly(self):
print('飞起来')
Bird类同时继承Animal类和Fly类。同时拥有这两个类的属性和方法
class Bird(Animal, Fly):
pass
b1 = Bird()
print(b1.name)
b1.fly()
注意: 实际开发中,不到万不得已不建议使用多继承
04-object memory management 对象的内存管理
对象值是存在堆中,python自动去回收的
掌握,对象到底什么时候才会被销毁(回收)
栈中内容是系统自动创建自动销毁的,不需要管理。平时说的内存管理指的是对堆中的内存的管理;
python中能够存到堆里面的数据,全是对象
python中管理内存的机制:
python是通过引用计数来管理内存的,就看一个对象的引用计数的值是否为0,为0就销毁;
让一个变量存储对象的地址,那么这个变量就是对象的一个引用;如果变量存别的值或者删除这个变量,都会让这个引用消失
应用:如果想要对象提前被销毁,就删除其所有的引用。
class Person:
def __init__(self, name='', age=0, scores=[]):
self.name = name
self.age = age
self.scores = scores
# p1是一个变量,变量存的是对象的地址; 变量p1本身是在栈里面的
# Person()返回值才是对象
p1 = Person()
p2 = p1
lis1 = [p1]
dict1 = {'aaa': p1}
p1 =10
del p2
05-the application of package 包的应用
函数 ---> 对实现功能的代码的封装
类 ---> 对属性和方法进行封装
模块 ---> 对多个函数或者多个类进行封装
包 ---> 对多个模块进行封装
包的创建:pycharm新建file里的python package
举例:对时间操作的相关功能
--> 1.日期对相应的时间(年月日 -> 获取当天的时间\获取指定哪一天对应的星期\计算哪一年是闰年)
----> 2.时分秒 (秒钟/计算小时数/分数/时间相加等)
----> 3.时间戳 (时间转换、时间加密)
通过from--import 和 import导入包的内容
from my_time import my_date
my_date.get_date()
import my_time
my_time.my_date.get_date()