《人工智能实践:Tensorflow笔记》听课笔记9_2.7类、对象、面向对象的编程

附:课程链接
第二讲.Python语法串讲
2.7.类、对象、面向对象的编程`

由于个人使用Win7系统,并未完全按照课程所讲,以下记录的也基本是我的结合课程做的Windows系统+python3.70操作。且本人有python基础,故一些操作可能简略。

由于本节课涉及运行python代码,故利用PyCharm。并未完全按照网课。

记住编写代码时,除注释内容外,字符均使用英文格式。

python中最难的一部分。

一、类
1、:函数的集合、可实例化出对象的模具、具有共性的一类事物的统一描述。
2、实例化:一种格式:对象 = 类() 例如:t = turtle.Pen()。turtle是引入的一个模块,Pen是turtle里的一个类,t是对象。
3、对象:类实例化出的实体,对象真实存在,完成具体工作。
4、面向对象的编程:程序员反复优化类,拓展类的函数,再把优化好的类实例化出对象,用对象调用类里的函数执行具体的操作。
5、举例
在这里插入图片描述
①上面的类是下面类的父类;下面类是上面类的子类。
图中:猫是哺乳动物的子类,哺乳动物是动物的子类。
②类在命名时第一个字母通常大写,例如Animals、Mammals、Cats。
③每个类对应的为其功能,例如哺乳动物可呼吸、移动、吃东西,在计算机中用函数来表述这些功能。
④类具有继承关系。子类将具备自身和父类的功能。即,子类实例化出的对象,可以使用自身和父类的函数与变量。
6、类的定义(如果没有父类,则可以不写):

在这里插入图片描述

代码验证
pass占位起架构的作用,后面可用具体的函数代替pass。
在这里插入图片描述
类在定义函数时,语法规定第一个参数必须是self。(在PyCharm中自动显示self)
__init__(注意是 “两个下划线”+init+“两个下划线”)函数,在新对象实例化时会自动运行,用于给新对象赋初值。
【在网课中是__Init__,但是在实际编程中出现了报错:taks no arguments,经过检查发现应该是__init__,可能和实际版本有关,我使用的版本较新,为了适用未来的发展,建议大家使用较新版本】

class Animals:
    def breathe(self):
        print("breathing")
    def move(self):
        print("moving")
    def eat(self):
        print("eating food")
class Mammals(Animals):
    def breastfeed(self):
        print("feeding young")
class Cats(Mammals):
    def __init__(self,spots):
        #__init__类实例化时必须首先默认执行的初始化函数,用于给实例化的对象赋初值。
        # 比如这里Cats类的__init__函数就要给spots(斑点)赋初值。
        # 这样实例化的各个对象就可以在实例化时把斑点的数目赋初值了。
        self.spots = spots
    def catch_mouse(self):
        print("catch mouse")

将猫类实例化为一个叫kitty的对象,kitty有自己的特征属性,比如身上有10个斑点:

kitty = Cats(10)
print(kitty.spots)

结果打印出10:
在这里插入图片描述
另外,kitty还可以做具体的工作,比如捉老鼠:

kitty = Cats(10)
print(kitty.catch_mouse())
#对象运行函数,必须用对象.函数名,调用类里的函数

对象调用类里的函数,用对象.函数名
对象调用类里的变量,用对象.变量名

类内定义函数时,如调用自身或父类的函数与变量,须用self.引导,应写为self.函数名self.变量名
如,让猫再具有跳舞的功能,应拓展猫类:

class Cats(Mammals):
    def __init__(self,spots):
        #__Init__类实例化时必须首先默认执行的初始化函数,用于给实例化的对象赋初值。
        # 比如这里Cats类的__Init__函数就要给spots(斑点)赋初值。
        # 这样实例化的各个对象就可以在实例化时把斑点的数目赋初值了。
        self.spots = spots
    def catch_mouse(self):
        print("catch mouse")
    def left_foot_forward(self):
        print("leftfootforward")
    def left_foot_backward(self):
        print("leftfootbackward")
    def dance(self):
        self.left_foot_forward()    #调用猫类或父类的函数,用self.函数名
        self.left_foot_backward()
        self.left_foot_forward()
        self.left_foot_backward()

接下来用实例验证:

kitty = Cats(10)    #将Cats实例化为kitty对象
print(kitty.spots)  #调用kitty猫斑点变量
kitty.dance()   #执行kitty猫跳舞函数
kitty.breastfeed()  #调用其父类中的函数
kitty.move()    #调用其父类中的函数

验证结果:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值