Python自学记录-第9周

Python自学记录目录

Python自学记录-第1周
Python自学记录-第2周
Python自学记录-第3周
Python自学记录-第4周
Python自学记录-第5周
Python自学记录-第6周
Python自学记录-第7周
Python自学记录-第8周



前言

python的学习已经过去两个月了,眼下学习的内容是越来越多了,很多新的知识突然冒出来,有点遭不住啊……
本周继续学习python中继承、多态、重写、特殊属性和方法、浅拷贝和深拷贝、模块等。


一、概念

1、继承
简单来说,就是子类继承父类的属性和方法。
举个栗子,你爸是马云,那你就继承了他的美貌和智慧 (还有百万家产)

语法格式
在这里插入图片描述
PS:Python中的继承还可以进行多继承
(你可以同时拥有多个爸爸)
在这里插入图片描述
2、重写

  1. 父类没有的属性,子类可以自定义属性使用
  2. 不满意源父类属性,也可以将父类的属性重写
  3. 调用父类的属性使用super()即可

还是举个栗子,父类是汽车,子类不愿意继承父类只作为交通工具的能力,于是重写能力,加入了炫酷的外观和强劲的马力,子类是兰博基尼。
在这里插入图片描述

3、object类
object类是所有类的父类,所有类都拥有其属性和方法
我愿称之为始祖父类
在这里插入图片描述

4、多态
多态就是多种类型。
就是我虽然不知道引用对象什么类型,但可以通过此变量调用方法。

5、特殊方法和特殊属性
不做过多赘述,按照使用方法使用即可
在这里插入图片描述6、浅拷贝和深拷贝
浅拷贝:一般拷贝都是浅拷贝,对象包含的子对象内容不拷贝,都是相同的
深拷贝:使用copy模块的deepcopy函数,可以递归对象的子对象进行拷贝,即除了源对象,其他所有子对象也不相同

浅拷贝指向的子对象都是相同的
但深拷贝指向的子对象也不相同了

7、模块
什么叫做模块?在python中一个.py文件就是一个模块
注意:自定义模块名称不要和系统的模块名字相同

导入模块的两种格式
在这里插入图片描述

二、代码实例

1.继承和重写

这个例子中,Person为父类,Student和Teacher作为子类继承其父类的属性,也重写了部分属性,是子类独有的。

class Person(object): # Person继承object类
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def info(self):
        print(self.name,self.age)

class Student(Person):  # 继承Person
    def __init__(self,name,age,stu_no):
        super().__init__(name,age)  # 调用父类
        self.stu_no=stu_no
    def info(self):
        super().info()  # 调用父类的属性
        print(self.stu_no)

class Teacher(Person):
    def __init__(self,name,age,teachofyear):
        super().__init__(name,age)
        self.teachofyear=teachofyear
    def info(self):
        super().info()
        print('教龄',self.teachofyear)

stu = Student('张三',20,'1001')
teacher = Teacher('李四',34,10)

stu.info()
print('-------teacher.info()---------')
teacher.info()

运行结果

张三 20
1001
-------teacher.info()---------
李四 34
教龄 10

2.多态

Animal是父类,Dog和Cat继承了Animal,但Person()没有继承Animal也能使用eat()函数输出

class Animal(object):
    def eat(self):
        print('动物会吃')
class Dog(Animal):
    def eat(self):
        print('狗吃骨头')
class Cat(Animal):
    def eat(self):
        print('猫吃鱼')

class Person:
    def eat(self):
        print('人吃五谷杂粮')

# 定义一个函数
def fun(obj):
    obj.eat()

# 开始调用函数
fun(Cat())
fun(Dog())
fun(Animal())
print('----------')
fun(Person())

输出结果为:

猫吃鱼
狗吃骨头
动物会吃
----------
人吃五谷杂粮

3、深拷贝和浅拷贝

这里例子很好解释了深拷贝和浅拷贝对其子对象的操作,看ID的改变就知道了。

class CPU:
    pass
class Disk:
    pass
class Computer:
    def __init__(self,cpu,disk):
        self.cpu=cpu
        self.disk=disk

# (1)变量的赋值
cpu1 = CPU()
cpu2 = cpu1
print(cpu1,id(cpu1))
print(cpu2,id(cpu2))

# (2)类有浅拷贝
print('----------')
disk = Disk() #创建一个硬盘类的对象
computer = Computer(cpu1,disk) # 创建一个计算机的类

#浅拷贝
import copy
print('-------------copy-----------------')
computer2 = copy.copy(computer)
print(computer,computer.cpu,computer.disk)
print(computer2,computer2.cpu,computer2.disk)

print('------------------deepcopy--------------------')
computer3 = copy.deepcopy(computer)
print(computer,computer.cpu,computer.disk)
print(computer3,computer3.cpu,computer3.disk)


总结

本周又涉及到了很多知识点,剩余的内容已经不足一半了,看来我的python大成指日可待啊!

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值