【python基础】不懂什么是面向对象?没关系一篇文章教会你

2023-12-18 20:24:41

?向对象基础

  • 理解?向对象

  • 类和对象

  • 添加和获取对象属性

  • 魔法?法

理解面向对象

为了方便了解,我们拿面向过程做一个对比

例如:肚子饿了,想吃饭

面向过程:去超市—买菜—卖肉—买米—回家—洗菜—切肉—炒菜—煮米饭—盛饭—开吃

面向对象:点外卖

总结:?向对象就是将编程当成是?个事物,对外界来说,事物是直接使?的,不?去管他内部的情况。?编程就是设置事物能够做什么事。

类和对象

思考:打电话需要用手机,这个手机就是一个对象,这个对象哪来的呢?

答:它是制造出来的

思考:怎么制造的?

答:先构思图纸,再生产

在?向对象编程过程中,有两个重要组成部分:类 和 对象。

  • 类和对象的关系:?类去创建?个对象。

理解类和对象

类是对?系列具有相同特征?为的事物的统称,是?个抽象的概念,不是真实存在的事物

  • 特征即是属性

  • ?为即是?法

类?如是制造手机时要?到的图纸,也就是说类是?来创建对象

对象

对象是类创建出来的真实存在的事物,例如:手机。

注意:开发中,先有类,再有对象。

?向对象实现?法

语法

class 类名():
    代码
    pass

注意:类名要满?标识符命名规则,同时遵循驼峰命名习惯

快速体验

class My_Project():
    print("我是第一个类")

创建对象

语法

# 变量名 = 类名()

快速体验

class My_Phone():

    def call_tel(self):
        print("正在打电话")

    def play_game(self):
        print("正在打游戏")

# 创建对象
apple = My_Phone()

print(apple)

# 调用对象的实例方法
apple.play_game()

创建对象的过程也叫实例化对象

self

self 代表类的实例

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

添加和获取对象属性

属性即是特征,?如:手机的颜色,大小,重量… > 对象属性既可以在类外?添加和获取,也能在类??添加和获取。

类外?添加对象属性

语法

对象名.属性名 =

快速体验

# -*- coding:utf-8 -*-
class My_Phone():
    def main(self):
        pass

apple = My_Phone()

apple.width = 10
apple.heigth = 15

print(apple.width)
print(apple.heigth)

类里面获取对象属性

语法

self.属性名

快速体验

class My_Phone():
    def main(self):
        print(self.width)
        print(self.heigth)

apple = My_Phone()

apple.width = 10
apple.heigth = 15

apple.main()

魔术方法

在 Python 中,__ xx__() 的函数叫做魔法?法,指的是具有特殊功能的函数。

init()

手机的尺寸大小生来就有,那么能不能在生产之前就赋予属性呢?

init() :初始化对象

class My_Phone():
    def __init__(self):
        self.width = 10
        self.heigth = 15

    def main(self):
        print(self.width)
        print(self.heigth)

apple = My_Phone()

init() ?法,在创建?个对象时默认被调?,不需要?动调?

init(self) 中的 self 参数,不需要开发者传递,python 解释器会?动把当前的对象引?传递过去。

  • 带参数的 init

?个类可以创建多个对象,如何对不同的对象设置不同的初始化属性呢?

传参即可

class My_Phone():
    def __init__(self,width,heigth):
        self.width = width
        self.heigth = heigth

    def apple_phont(self):
        print("苹果手机的宽为:",self.width)
        print("苹果手机的高为:",self.heigth)

    def huawei_phont(self):
        print("华为手机的宽为:",self.width)
        print("华为手机的高为:",self.heigth)

apple = My_Phone(10,20)
apple.apple_phont()

str()

当使? print 输出对象的时候,默认打印对象的内存地址。如果类定义了 str ?法,那么就会打印从在这个?法中 return 的数据。

解释类的属性或作用

# -*- coding:utf-8 -*-

class Demo():
    def __init__(self, width, heigth):
        self.width = width
        self.heigth = heigth

    def __str__(self):
        return f"你这个手机的宽是{self.width},高度是{self.heigth}"

a = Demo(10,20)
print(a)

类属性与方法

类的私有属性

__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问

class Demo():
    __num = 0  # 私有属性
    result = 0  # 公开属性

    def count(self):
        self.__num += 1
        self.result += 1
        print(self.__num)

run = Demo()
run.count()
run.count()
print(run.result)
print(run.__num)    # 报错,实例不能访问私有变量

综合应用-烤地瓜

需求涉及?个事物: 地?,故案例涉及?个类:地?类

  • 地?的属性

? — 被烤的时间

? — 地?的状态

? — 添加的调料

  • 地?的?法

? 被烤

? — ?户根据意愿设定每次烤地?的时间

? — 判断地?被烤的总时间是在哪个区间,修改地?状态

? 添加调料

? — ?户根据意愿设定添加的调料

? — 将?户添加的调料存储

  • 显示对象信息

需求

1、被烤的时间和对应的地?状态:

? 0 - 5 分钟 : ?的

? 5 - 10 分钟 : 半?不熟

? 10-12 分钟 : 烤熟了

? 超过 12 分钟: 烤糊了

2、添加调料:

?

代码实现

# -*- coding:utf-8 -*-

class Test_Potato():
    def __init__(self):
        # 考的时间
        self.cook_time = 0
        # 考的状态
        self.cook_sratic = "生的"
        # 放的调料
        self.cook_seasoning = []

    def cook(self, time):
        self.cook_time += time
        if 0 <= self.cook_time < 5:
            self.cook_sratic = "生的"
        if 5 <= self.cook_time < 10:
            self.cook_sratic = "半生半熟"
        if 10 <= self.cook_time <= 12:
            self.cook_sratic = "熟了"
        if self.cook_time > 12:
            self.cook_sratic = "烤糊了"

    def add_seasoning(self,*seasoning):
        self.cook_seasoning.append(seasoning)

    def __str__(self):
        return f"当前地瓜考了--{self.cook_time}--分钟,他的状态是--{self.cook_sratic}--,添加的调料是--{self.cook_seasoning}"



if __name__ == '__main__':
    main = Test_Potato()
    main.cook(11)
    main.add_seasoning("辣椒","花生","孜然")
    print(main)


在这里给大家分享一些免费的课程供大家学习,下面是课程里面的截图,点击蓝色字体也可以进行跳转哦~点击这里

1.Python所有方向的学习路线

在这里插入图片描述

2.学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
在这里插入图片描述

三、学习资料在这里插入图片描述

四、实战资料

实践是检验真理的唯一标准。这里的压缩包可以让你再闲暇之余帮你提升你的个人能力。在这里插入图片描述

五、视频课程在这里插入图片描述

好啦今天的分享就到这里结束了,快乐的时光总是短暂呢,想学习更多课程的小伙伴不要着急,有更多惊喜哦~

文章来源:https://blog.csdn.net/bagell/article/details/132754163
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。