python——面向对象(上)

目录

一、面向对象编程的基础

二、类和对象

三、魔法方法

四、继承

​五、test


一、面向对象编程的基础

解决菜鸟买电脑的故事

第一种方式:

1)在网上查找资料

2)根据自己预算和需求定电脑的型号 MacBook 15 顶配 1W8

3)去市场找到苹果店各种店无法甄别真假 随便找了一家

4)找到业务员,业务员推荐了另外一款 配置更高价格便宜,也是苹果系统的 1W

5)砍价30分钟 付款9999

6)成交

回去之后发现各种问题

第二种方式 :

1)找一个靠谱的电脑高手

2)给钱交易

买电脑的第一种方式:

强调的是步骤、过程、每一步都是自己亲自去实现的

这种解决问题的思路我们就叫做面向过程

买电脑的第二种方式:

强调的是电脑高手, 电脑高手是处理这件事的主角,对我们而言,我们并不必亲自实现整个步骤只需要调用电脑高手就可以解决问题

这种解决问题的思路就 是面向对象

\

二、类和对象

 类

l具有相似内部状态和运动规律的实体的集合(或统称为抽象)。

具有相同属性和行为事物的统称

对象

1.某一个具体事物的存在 ,在现实世界中可以是看得见摸得着的。
2. 可以是直接使用的

 类和对象的关系

1.类就是创建对象的模板
2.对象就是根据类产生的一个具体实例

类是同一类对象的属性和行为的抽象和总结

类描述同一类对象应包含的数据

类描述同一类对象的行为特征

类是抽象的,是一个概念模型

一个类可以找到多个对象

类是对象的模板,对象是该类的实例

对象

万事万物皆对象

面向对象方法的核心

具有明确的属性和行为

程序是对象的集合,通过消息交互

类和对象关系

类就是创建对象的模板

对象就是根据类产生的一个具体实例

类(Class) 由3个部分构成:

  类的名称:类名

  类的属性:一组数据

  类的方法:允许对进行操作的方法 (行为)

定义一个类,语法格式:

  class 类名:

  方法列表

# 新式类定义形式

class Hero(object):

  def info(self):)

    print("英雄各有见,何必问出处。")

self  代表类的实例,而非类

1.类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。
2.所谓的self,可以理解为自己可以把self当做C++中类里面的this指针一样理解,就是对象自身的意思
3.某个对象调用其方法时,python解释器会把这个对象作为第一个参数传递给self,所以开发者只需要传递后面的参数即可

python中,可以根据已经定义的类去创建出一个或多个对象。

  对象名1 = 类名()

  对象名2 = 类名()

  对象名3 = 类名()

对象的定义  

添加和获取对象属性

 

 在方法内通过self获取对象属性

 

 创建对象后再去添加属性有点不合适,有没有简单的办法,可以在创建对象的时候,就已经拥有这些属性?

三、魔法方法

类的初始方法——__init__()方法

•python中提供__init__()方法,
•在创建对象的时候,直接设置对象的属性
•语法格式:
•  def __init__(self):
•  pass
•例子:在上面的Car类上,添加__init__()
•__init__()方法,创建对象时,默认被调用。

__init__(self) 默认有1个参数名字为self,如果在创建对象时传递了多个个参数

语法格式:

  def __init__(self,参数1,...,参数n):

  self.属性1 = 参数1

  ......

  self.属性n = 参数n

 

类的字符信息输出——__str__()方法 

当使用print输出对象的时候,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据,举例如下:

class Car:

      def __init__(self, newWheelNum, newColor):

        self.wheelNum = newWheelNum

        self.color = newColor

      def __str__(self):

        msg = "嘿...我的颜色是" + self.color + ",我有%d"%self.wheelNum+ "个轮胎..."

        return msg

 

•#创建对象: 
•BMW = Car(4, "白色")
•print(BMW)
•执行:python3  XXX.py 
•嘿...我的颜色是白色,我有4个轮胎...
•注意:__str__()返回字符串类型

类的析构方法——__del__()方法

•创建对象后,python解释器默认调用__init__()方法;
•当删除一个对象时,python解释器也会默认调用一个方法,这个方法为__del__()方法。

语法格式:

  def __del__(self):

  pass

•注意 :
•当有1个变量保存了对象的引用时,此对象的引用计数就会加1
•当使用del删除变量指向的对象时,如果对象的引用计数不会1,比如3,那么此时只会让这个引用计数减1,即变为2,当再次调用del时,变为1,如果再调用1次del,此时会真的把对象进行删除

四、继承

生活中的继承

单继承

故事情节:煎饼果子老师傅在煎饼果子界摸爬滚打几十年,拥有一身精湛的煎饼果子技术,并总结了一套"古法煎饼果子配方"。

可是老师傅年迈已久,在嗝屁之前希望把自己的配方传承下去,于是老师傅把配方传给他的徒弟大猫... 

多继承

故事继续:大猫掌握了师傅的配方,可以制作古法煎饼果子。但是大猫是个爱学习的好孩子,他希望学到更多的煎饼果子的做法,于是通过百度搜索,找到了一家煎饼果子培训学校。(多继承) 

 

五、test

代码完成:
a)小明爱跑步,爱吃东西。
1)小明体重75.0公斤
2)每次跑步会减肥0.5公斤
3)每次吃东西体重会增加1公斤
4)小美的体重是45.0公斤

class demo():
    def __init__(self):
        self.tizhong = 0
    def pao(self):
        self.tizhong = self.tizhong - 0.5
    def eat(self):
        self.tizhong = self.tizhong + 1
    def put(self):
        print(self.tizhong)
xiaoming = demo()
xiaoming.tizhong = 75.0
xiaomei = demo()
xiaomei.tizhong = 45.0
xiaomei.put()
xiaoming.eat()
xiaoming.pao()
xiaoming.put()

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

宇努力学习

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

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

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

打赏作者

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

抵扣说明:

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

余额充值