day 19集成内存管理和拷贝
1.继承
继承是让子类直接拥有父类的属性和方法的过程就是继承
子类 - 继承者
父类 - 被继承者(又叫超类)
如何继承
class 子类名(父类1, 父类2, 父类3, …):
类的说明文档
类的内容
说明:
1)默认情况下,类继承自object:
class 类名: == class 类名(object):
2)python中的类支持多继承
class Person:
num = 61
def __init__(self, name='张三', age=18, gender='男'):
self.name = name
self.age = age
self.gender = gender
self.__id = '0001'
def eat(self, food='馒头'):
print(f'{self.name}在吃{food}')
@staticmethod
def func1():
print('静态方法')
class Student(Person):
pass
子类添加内容
1)添加类属性和方法
直接在子类中定义
2)添加对象属性
需要在子类的__init__方法中通过super()去调用父类的__init__方法
注意:super()只能在对象方法和类方法中使用,不能在静态方法中使用
class Animal:
num = 100
def __init__(self, money='123'):
print('Animal的init')
self.age = 0
self.gender = '雌'
self.money = money
def eat(self, food='草'):
print(f'动物吃{food}')
@classmethod
def func2(cls):
print('你好, animal')
class Cat(Animal):
x = 'abc'
num = 10
# 添加方法
def play(self):
print('猫在玩毛线')
def eat(self, food='鱼'):
print('猫在玩冒险')
# 添加对象属性
def __init__(self):
# super().父类的方法
super().__init__()
print("Cat的init")
print(self.money)
self.name = '花花'
@classmethod
def func2(cls):
super().func2()
print('你好, 小猫')
cat = Cat()
print(Cat.num, Cat.x)
cat.eat()
cat.play()
print(cat.age, cat.gender)
Cat.func2()
2.内存管理
内存管理
定义变量保存数据的时候系统会自动在内存中开辟空间保存数据(空间的大小根据数据大小确定)
默认情况下,使用的数据如果之前已经保存过,还是会重新申请新的内存保存这个数据,但是数字和字符串例外
一个数据是否血药释放就看着个数据引用奇数是否为0(没有引用),
如果不为0(有引用)数据不会销毁
为0(没有引用),数据会销毁