Python基础(一)---【12】类

面向对象简要介绍

说到类,就不得不说面向对象。

那什么是面向对象呢?就是你有个对象,面对着你的对象编写程序,哈哈~~

开个玩笑

在函数之前的学习都是面向过程,这一步做什么,下一步做什么,一直到执行结束~~

举个简单的例子

你想喝鱼汤,按照面向过程的方式就是:

  • 买鱼
  • 杀鱼
  • 放锅里油煎一下
  • 放调料
  • 放水
  • 烧开
  • 喝鱼汤

面向对象:

  • 找个饭店
  • 付钱
  • 喝鱼汤

总结

  • 面向过程:根据业务逻辑从上到下写代码
  • 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程

不管是面向过程还是面向对象,其实都是解决问题的一种思路。

面向对象编程有2个非常重要的概念:类和对象

对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类

类都是抽象,在使用的时候通常会找到这个类的一个具体的存在,使用这个具体的存在

邓爷爷有句话说,不管黑猫白猫逮到老鼠就是好猫

那么,当别人问你,什么是猫的时候你怎么说?

我肯定会说猫有:

  • 四肢
  • 尾巴
  • 两只耳朵
  • 叫声:喵喵~~

这些是猫都会有的特征,是最基本的属性

那么,我们将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念————类

而邓爷爷说的黑猫白猫就是对象

类的构成

类(class)由三部分构成:

  • 类的名称:类名【遵循大驼峰命名方法】
  • 类的属性:一组数据
  • 类方法:允许对进行操作的方法(行为) 举例
  • 类的名称:猫
  • 属性:颜色、大小、品种
  • 方法(行为/功能):会跑,会抓老鼠

定义一个类

class 类名:
    方法

定义一个猫类:

class Cat(object):
    def base_info(self):
        print("四肢")
        print("尾巴")
        print("两只耳朵")
        print("叫声:喵喵~~")
    
    def catchMouse(self):
        print("会抓老鼠")

创建对象

上面,已经知道了怎么去定义一个类,怎么去定义一个对象?

创建对象的格式:

  • 对象名=类名()

示例代码:

black_cat = Cat()
black_cat.color = '黑色'   #    添加猫的颜色
black_cat.run = 10  #    给对象添加属性,不会跑怎么抓老鼠

black_cat.catchMouse()   #    调用对象方法,去抓老鼠

总结:当创建一个对象的时候,好比用一个模型,来生产一个具体的事物

self

  • 所谓的self,可以理解为自己
  • 某个对象调用其方法时,python解释器会把这个对象作为第一个参数传递给self,所以开发者只需要传递后面的参数即可

初始化方法

class 类名():
    # 初始化函数,用来完成一些默认的设定
    def __init__(): #   init两边各两个英文状态下的下划线
        pass

定义猫类:

# 定义猫类
class Cat(object):
    def __init__(self):
        self.leg = 4
        self.tail = 1
        self.ear = 2
        self.voice = "喵喵"
    
    def catchMouse(self):
        print("会抓老鼠")

# 创建猫的对象
black_cat = Cat()
print("猫有{}腿".format(black_cat.leg))
print("猫有{}尾巴".format(black_cat.tail))
print("猫的叫声{}".format(black_cat.voice))
print("猫有{}耳朵".format(black_cat.ear))

运行结果:

  • 猫有4腿
  • 猫有1尾巴
  • 猫的叫声喵喵
  • 猫有2耳朵

总结

当创建Cat对象后,在没有调用__init__()方法的前提下,black_cat就默认拥有了4个属性leg、tail、ear、voice,原因是__init__()方法是在创建对象后,就立刻被默认调用了

想一下

既然在创建完对象后__init__()方法已经被默认的执行了,那么能否让对象在调用__init__()方法的时候传递一些参数呢?如果可以,那怎样传递呢?

class Cat():
    def __init__(self,newVoice,newEar):
        self.ear = newEar
        self.voice = newVoice
    
    def catchMouse(self):
        print("抓老鼠")


# 创建对象
black_cat = Cat(2,'喵喵')

# 查看猫的属性
print(black_cat.voice)
print(black_cat.ear)

# 返回结果
2
喵喵
  • 总结
    • __init__()方法,在创建一个对象时默认被调用,不需要手动调用
    • __init__(self)中,默认有1个参数名字为self,如果在创建对象时传递了2个实参,那么__init__(self)中除了self作为第一个形参外还需要2个形参,例如__init__(self,x,y)
    • __init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递进去
    • 在python中方法名如果是__xxxx__()的,那么就有特殊的功能,因此叫做“魔法”方法

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值