Python基础学习笔记(3)模块 对象 类

Python基础学习笔记(3)模块 对象 类


前言

模块 对象和类的学习

一、引入模块

  但写代码的时候把别人写好的代码直接拿过来用,是非常正常并且高效的行为。比如如果你要对列表里面的所有数字求和,你可以自个写个函数,然后每次需要求和时就调用这个函数。但 Python 已经给你提供了一个叫 SUM 的内置函数,直接调用就可以得到列表里所有数字的和,就没必要自己定义。
  比如 Python 有个模块叫statistics,帮助进行统计相关的计算里面就有个叫做 Median 的用于计算中位数的函数,那么这一坨代码就可以被简化成两行代码,第一行引入 statistics 模块,第二行使用 statistics 模块里面的 Median 函数。

import statistics 
print(statistics.median([1,2,3,4,5,6,7]))#求中位数,import后的模块在使用时用模块名.函数名(参数)来调用
4

  如果想看模块中的函数具体怎么写的,在Windows用Ctrl+左键点击函数名,在Mac上用Command+左键点击函数名
具体引入的方法就是在 import 后面跟上模块的名字,比如 import statistics 之后要用模块里的函数或变量的时候,就用模块名.函数名或模块名点.变量名来使用。

二、Python面向对象编程 封装、继承、多态.

1.什么是面向对象

  面向对象编程首先并不会聚焦于第一步是做什么,而是模拟真实世界,先考虑各个对象有什么性质,能做什么事情。
比如我们去银行ATM取钱,每个 ATM 都有自己的性质,包括编号、银行支行,那么我们可以提取出这些性质定义 ATM 类,然后用类创建对象。类和对象之间的关系是类是创建对象的模板,对象是类的实例。更通俗点说,可以把类想象成制造具体对象的图纸,图纸上说 ATM 可以有编号、银行、支行这三个属性。那么通过 ATM 类创建出来的 ATM 实例,无论是招商银行南园支行编号 001 的ATM,还是中国银行北园支行编号 002 的 ATM 都是 ATM 对象,些编号银行支行则是不同 ATM 对象各自的属性。我们可以用相同的方式把纸币类以及通过纸币类创建的两个纸币对象也定义出来,现在这些对象就可以直接作为参数传入存钱和取钱函数中。

class ATM:
    def __init__(self,atm_id,bank_name,branch_name):#self是指向对象本身的指针,是一个约定俗成的名字,可以改成其他名字,但是不推荐,__init__是一个特殊的方法,用来初始化对象,也叫构造方法,当创建对象时,会自动调用这个方法。
        self.atm_id=atm_id
        self.bank_name=bank_name
        self.branch_name=branch_name
#创建一个对象
atm1=ATM('001','招商银行','南苑支行')
print(atm1.atm_id)
001

  除了属性之外,另一个能和对象绑定的是方法。正如真实世界里,对象拥有不同的属性,并且能做不同的事情,那属性就对应对象拥有的性质,而方法对应对象能做些什么?比如洗衣服,人能放东西和开机,洗衣机能清洗和烘干,所以这些可以作为类的方法被定义出来。换个角度来看,所谓方法就是放在类里面的函数,所谓属性就是放在类里面的变量。定义好类之后就可以通过类来创建对象,然后让各个对象去执行这些方法。
  封装,表示写类的人将内部实现细节隐藏起来。你其实只需要知道它有什么方法,有什么作用,具体怎么用就足够了,不需要知道方法里面具体是怎么写的,这和真实世界是一样的,我们现实中使用洗衣机时也是直接通过操作界面的按钮来使用,不需要知道里面的原理,也不需要钻到洗衣机背后研究电路板,封装能减少我们对不必要细节的精力投入。
  继承就像现实中的儿子继承爸爸,爸爸继承爷爷类,也可以由子类和父类来表示从属关系,比如小学生、大学生都是学生,都应该有学号,年级的属性,都要去学校。可以看到这两个类之间的共同之处,导致有很多重复代码产生,但我们可以创建出一个叫学生的父类,然后让小学生和大学生去继承这个类。这样做的好处是父类的那些属性方法都可以被继承,不需要反复定义

2.如何创建类

  定义一个类,python在定义类名的时候用的是Pascal命名法,也就是每个单词的首字母大写,比如ATM,Student,UserAccount等,后面要跟一个冒号,然后是类的属性和方法。
  举个例子,我们可以定义一个可爱猫猫类叫CuteCat(这里类名首字母要大写来区分单词),下一步是思考这个类的对象都拥有什么属性,猫猫可以有的属性包括名字、年龄、花色等。类有一个特殊的方法叫做构造函数,主要作用是定义实例对象的属性。它必须要被命名为init,前后得有两个下划线,注意是俩括号里面可以放任意数量的参数,但第一个参数永远是被占用的,得用于表示对象自身,约定俗成叫self,它能帮你把属性的值绑定在实例对象上,比如猫猫的名字属性为小花,可以写self.name=小花,说明是对象的 name 属性的值。如果写成 name =小花,前面没有 self ,Python会觉得只是在给普通的 name 变量赋值,就不会把这个值看成是对象的属性。

class CuteCat:#每个单词的首字母大写
    def __init__(self,cat_name,cat_age,cat_color): 
        #千万注意  init是用的双下划线,记住是双下划线
        self.name=cat_name
        self.age=cat_age
        self.color=cat_color#对象的属性
cat1=CuteCat('小花',3,'白色')#创建一个对象
print(cat1.age)

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值