数据分析学习笔记—python面向对象与模块

一、python面向对象与模块思维导图

在这里插入图片描述

二、补充说明:对象的属性和方法

1、属性的概念

属性就是展示对象的形态,比如学生是一个对象,学生的名字,学生的年龄,学生的性别,学生的成绩都是属性,它描述了学生这个对象具有什么特征

2、方法的概念

方法其实跟函数我觉得是差不多的,他更多的表现的是一种操作,或者说是对象的一种行为,比如学生打架 ,学生学习了

3、实例理解

这里创建一个类和对象:

 #创建类
class Hero(object):  
    def move(self):
        print("发起了攻击")
#创建对象,对象名 = 类名
super_hero= Hero()

现在给对象赋予属性,名字,攻击力,生命值

#给对象添加属性和相对应的属性值
hero.name = "将军"   #名字
hero.hp = "1000" #生命值
hero.attack = "700"  #攻击力

然后我们获取它的属性值,看一下有没有给它添加成功:
在这里插入图片描述

然后我们试着使用有了具体对象后的方法
在这里插入图片描述
这是总的代码,第一步我们创了类,第二步我们创建了对象,第三步给对象添加了属性,然后我们验证了这个属性并调用了实例化后的方法。def move(self)里面的self其实就是对象自己的引用作为值传递了进去,我们还可以把获取对象属性值那一步精简一下,变成下面这样:

class Hero(object):
    def move(self):
        print("发起了攻击")
    def base(self):
         print("人物 %s 的生命值剩余 %d , 攻击力 %d" % (hero.name,hero.hp,hero.attack))

#创建对象,对象名 = 类名
hero = Hero()

#给对象添加属性和相对应的属性值
hero.name = "将军"   #名字
hero.hp = 1000 #生命值
hero.attack = 700  #攻击力

#获取对象的实例方法
hero.base()
hero.move()

运行结果是一样的
在这里插入图片描述

4、init方法

  1. 概念:无需任何操作,类创造对象时自动执行相关的代码
  2. 无参数情况下:
    在这里插入图片描述
  3. 有参数情况下,直接在__init__里面添加参数,然后对其赋值初始化,增加属性
    在这里插入图片描述

三、补充说明:继承的种类

1、单继承

还是用上文的例子举例

class Hero(object):  #父类
    def __init__(self,name,hp,attack):
        self.name = name
        self.hp = hp
        self.attack = attack
        print("%s 的生命值有剩余 %d,武力值为 %d" % (self.name,self.hp,self.attack))
        print("被打败了")
class City_hero(Hero): #子类,没有对父类作什么改变,就是单纯的继承,而且只继承了一个父类Hero
    pass
hero = City_hero('将军',1000,700)

2、多继承

当子类比较贪心,一次性继承多个父类(这里写了两个父类的实例)时。如果父类的方法命名时相同的,那么调用的时候肯定会出现冲突,也就是说,你也叫张三,我也叫张三,是给你叫还是给我叫:

class Hero(object):  #第一个父类
    def __init__(self):
        self.name = "将军"
    def me(self):
        print("%s" % (self.name))
    def bad(self): 
        print("被打败了")
        
class Person(object):  #第二个父类
    def __init__(self):
        self.name = "敌方将军"
    def me(self):
        print("%s" % (self.name))
    def result(self):
        print("打赢了")
        
class City_hero(Hero,Person): #子类,继承了2个父类
    pass

hero = City_hero()
hero.me()

最终结果是输出了将军,也就是执行了 City_hero(Hero,Person)中的hero的init方法,可以总结继承多个父类,产生冲突时,执行第一个父类的方法
我们修改一下代码
在这里插入图片描述
执行出来了这样一个结果,hero.bad,hero.result,两个父类的内容都输出了,因为他们之间没有产生冲突

四、补充说明:模块之自定义模块

1、自定义模块的定义、创建

举自己写的一段代码进行梳理:

__all__ = ["today", "tomorrow"]   #如果使用from mod import *,就只能执行today和tomorrow这两个函数

today = 12

def tomorrow():     
    print("加油")

class Hero(object):
    def __init__(self,name):
        self.name = name
        print("%s 的生活多姿多彩" % self.name)
if __name__ == '__main__':   #假如这个模块直接被运行而不是调用,它就会执行接下来的代码块,如果是模块被导入了,那就不执行下面这个代码块
    tomorrow()

2、保存自定义功能模块,以jupyter Notebook为例

  1. 对代码文件进行重命名在这里插入图片描述
  2. 保存下载代码文件为.py文件
    在这里插入图片描述
    3、将代码文件放在和接下来的代码文件一个文件夹内

在这里插入图片描述
4、import模块,检验功能
在这里插入图片描述

3、关于 if name == ‘main’ 看代码片的注解有

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深耕玩家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值