首页 > 编程语言 >如何系统得自学python?(基础知识篇完)——12.面向对象

如何系统得自学python?(基础知识篇完)——12.面向对象

时间:2024-03-28 11:01:27浏览次数:44  
标签:__ 12 apple python self --- 面向对象 print def

 一、面向对象

为了方便了解,我们拿面向过程做一个对比
例如:肚子饿了,想吃饭

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

面向对象:点外卖

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

二、类和对象

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

答:它是制造出来的

思考:怎么制造的?

答:先构思图纸,再生产

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

类和对象的关系:⽤类去创建⼀个对象。

 1.理解类和对象

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

  • 特征即是属性
  • ⾏为即是⽅法

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

对象

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

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

⾯向对象实现⽅法
class 类名():
    代码
    pass
注意:类名要满⾜标识符命名规则,同时遵循驼峰命名习惯
class My_Project():
    print("我是第一个类")

2.创建对象

语法:变量名 = 类名()
class My_Phone():

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

    def play_game(self):
        print("正在打游戏")
# 创建对象
apple = My_Phone()

print(apple)

# 调用对象的实例方法
apple.play_game()
创建对象的过程也叫实例化对象.

 

3.添加和获取对象属性

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

self:

self 是 Python 中的一个特殊参数,用于引用对象本身。在类的方法中,第一个参数通常都是 self,用来指代调用该方法的对象本身。

当你调用类的方法时,Python 会自动将调用该方法的对象传递给 self 参数。这样,在方法内部就可以通过 self 来访问对象的属性和其他方法。

  • self代表类的实例
  • 类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的**第一个参数名称**, 按照惯例它的名称是 self。
类外⾯添加对象属性
语法:对象名.属性名 = 值
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()

4.魔术方法( __ __xx____())

在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解释器会⾃动把当前的对象引⽤传递过去。

5.带参数的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()

6.______str______()

当使⽤print输出对象的时候,默认打印对象的内存地址。如果类定义了 __str__ ⽅法,那么就会打印从在这个⽅法中 return 的数据。
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)

>> 你这个手机的宽是10,高度是20

7.类属性与方法

类的私有属性

__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.逻辑分析

 

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



* **地⽠的属性**

​		--- 被烤的时间

​		--- 地⽠的状态

​		--- 添加的调料

* **地⽠的⽅法**

​			**被烤**

​					--- ⽤户根据意愿设定每次烤地⽠的时间

​					--- 判断地⽠被烤的总时间是在哪个区间,修改地⽠状态

​			**添加调料**

​					--- ⽤户根据意愿设定添加的调料

​					--- 将⽤户添加的调料存储

* **显示对象信息**

### 需求

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

​		0  -  5分钟 :	⽣的

​		5 - 10分钟 :    半⽣不熟

​		10-12分钟 :	烤熟了

​		超过12分钟:   烤糊了

2、添加调料:

2.代码实现

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)  # 地瓜烤了11分钟
    main.add_seasoning("辣椒","花生","孜然")  # 添加辣椒、花生、孜然调料
    print(main)  # 打印地瓜的状态、烤的时间和添加的调料

标签:__,12,apple,python,self,---,面向对象,print,def
From: https://blog.csdn.net/weixin_66370632/article/details/137073622

相关文章

  • 你都用Python来干什么?为什么这么多人想学习Python?
    挺想回答一下这个问题的。我是非码专业,从2019年开始接触python。一开始其实需求非常简单,就是为了处理大量的Excel表格。其实本来四大的工作经历已经让我excel的水平比较高了,各种跨表定位、查询,复杂的字符串操作,还有vba函数都可以处理。但是python铺天盖地的宣传还是让我觉......
  • 如何系统地学习Python(一)基础语法与数据类型
    学习Python可以遵循一个结构化的框架,从基础知识开始,逐步深入到高级特性和实际应用。后面根据系统的学习Python的框架分享一系列文章,请交流指正:一、python介绍Python是一种高级的、解释型的、面向对象的编程语言。它具有简单易学、语法优雅、可读性强等特点,因此被广泛应用于We......
  • Django框架之python后端框架介绍
    一、网络框架及MVC、MTV模型1、网络框架网络框架(Webframework)是一种软件框架,用于帮助开发人员构建Web应用程序和Web服务。它提供了一系列预先编写好的代码和工具,以简化开发过程并提高开发效率。网络框架通常包括以下功能和特点:路由处理(Routing):网络框架定义了URL与处理程序......
  • Python数据库编程全指南SQLite和MySQL实践
    本文分享自华为云社区《Python数据库编程全指南SQLite和MySQL实践》,作者:柠檬味拥抱。1.安装必要的库首先,我们需要安装Python的数据库驱动程序,以便与SQLite和MySQL进行交互。对于SQLite,Python自带了支持;而对于MySQL,我们需要安装额外的库,如mysql-connector-python。#安装MyS......
  • CSCI 2122实现二进制翻译器
    CSCI2122任务4截止日期:2024年3月22日星期五晚上11:59,通过git提交目标本课业的目的是练习用C进行编码,并强化中讨论的概念关于程序表示的类。在这个任务1中,您将实现一个二进制翻译器2,如Rosetta3。您的程序将从翻译一个简单的指令集(比x86简单得多)到x86并生成x86汇编代码。代码将......
  • 4.Python数据分析—数据分析入门知识图谱&索引(知识体系下篇)
    4.Python数据分析—数据分析入门知识图谱&索引-知识体系下篇一·个人简介二·机器学习基础2.1监督学习与无监督学习2.1.1监督学习:2.1.2无监督学习:2.2特征工程2.3常用机器学习算法概述2.3.1监督学习算法:2.3.2无监督学习算法:2.3.3强化学习:2.4模型评估与选择三......
  • Python虚拟环境遇到的小问题(pip)
    问题最近想接触下Pyside6做窗口化的程序,然后就在WSL2搭建环境。第一步安装包的时候就卡住了。原因是虽然我的Python在虚拟环境.venv中,但是该环境没有pip。在命令行直接whichpip,显示的是系统全局的pip。解决多方查询,似乎没有一个很好的解决方案。目前主流的做法是,下载一个自动......
  • 华为OD机试 - 最多购买宝石数目(Java & JS & Python & C & C++)
    须知哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持文章目录须知题目描述输入描述输出描述解题思路:题目描述橱窗里有一排宝石,不同的宝石对应不同的价格,宝石的价格标记为gems[i]0≤i<nn=gems.length宝石可同时......
  • python x_train取前100行
    目录Python代码示例:取出x_train前100行数据Python代码示例:取出x_train前100行数据在机器学习和数据处理中,有时我们需要对数据集进行处理,比如提取其中的部分数据进行分析或训练模型。在Python中,我们可以利用简单的代码来实现这一功能。下面就以一个示例来演示如何使用Pytho......
  • 算法打卡day28|贪心算法篇02|Leetcode 122.买卖股票的最佳时机 II、55. 跳跃游戏、45.
    算法题Leetcode122.买卖股票的最佳时机II题目链接:122.买卖股票的最佳时机II 大佬视频讲解:买卖股票的最佳时机II视频讲解 个人思路因为只有一只股票,且两天作一个交易单元,那每次只收集正利润就可以最终最多可以获取的利润,可以用贪心。解法贪心法从下图可以发......