首页 > 其他分享 >面向对象

面向对象

时间:2022-10-04 21:44:05浏览次数:53  
标签:__ -- self 面向对象 print 手机 def

一、理解面向对象

(一)理解面向对象的举例

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

  • 面向过程:去超市--买菜--买肉--买米--回家--洗菜--切肉--炒菜--煮米饭--盛饭--开吃
  • 面向对象:点外卖
  • 总结:面向对象就是将编程当成是一个事物,对外界来说,事物是直接使用的,不用去管他内部情况。而编程就是设置事物能够做什么事情。

(二)类和对象

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

  答:它是制造出来的

  思考:怎么制造的?

  答:先构图纸,再生产

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

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

1、类

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

  • 特征即是属性
  • 行为即是方法  

  类比如是制造洗衣机时要用到的图纸,也就是说类是用来创建对象的

2、对象

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

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

二、面向对象实现方法

  语法

class 类名():
    代码
    pass

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

  代码体验

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

My_Project()

(一)创建对象

  语法

# 变量名 = 类名()

  实例

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

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

# 创建对象
apple = My_Phone()
print(apple)

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

(二)self

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

(三)添加和获取对象属性

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

1、类外面添加对象属性

  语法

对象名,属性名 = 值
class My_Phone():
    def main(self):
        pass

apple = My_Phone()

apple.width = 10
apple.heigth = 15

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

--------------------------
10
15

2、类里面获取对象属性

class My_Phone():
    def main(self,):
        print(f"手机的宽是{self.width}")
        print(f"手机的高是{self.heigth}")


apple = My_Phone()

apple.width = 10
apple.heigth = 15

apple.main()

--------------------------------
手机的宽是10
手机的高是15

三、魔术方法

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

(一)__init__()

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

  __init__():初始化对象

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

    def demo(self):
        print("手机的宽是",self.width)
        print("手机的高是",self.heigth)

apple = My_Phone()
apple.demo()

--------------------------
手机的宽是 10
手机的高是 15
  • 定义多个方法
class My_Phone():
    def __init__(self,width,heigth):
        self.width = width
        self.heigth = heigth

    def app_phone(self,name):
        print(f"手机是{name},手机的宽是",self.width)
        print(f"手机是{name},手机的高是",self.heigth)
    def huawei_phone(self,name):
        print(f"手机是{name},手机的宽是", self.width)
        print(f"手机是{name},手机的高是", self.heigth)
apple = My_Phone(10,15)
apple.app_phone("苹果")

huawei = My_Phone(20,40)
huawei.huawei_phone("华为")

----------------------------
手机是苹果,手机的宽是 10
手机是苹果,手机的高是 15
手机是华为,手机的宽是 20
手机是华为,手机的高是 40

(二)__str__()

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

  解释类的属性或作用

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

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

a = My_Phone()
print(a)

--------------------------
手机的宽是10,高度是15

(三)__del__()

  当删除对象时,Python解释器也会默认调用__del__()方法,在对象销毁的时候被调用,当对象不再被使用时,__del__()方法运行:

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

    def __del__(self):
        print("对象已经删除")

a = Demo(10,20)

---------------
对象已经删除

四、类属性与方法

(一)类的私有属性

  __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
2
2

五、综合应用-烤地瓜

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

  • 地瓜的属性

  -- 被烤的时间

  -- 地瓜的状态

  -- 添加的调料

  • 地瓜的方法

    被烤

      -- 用户根据意愿设定每次烤地瓜的时间

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

    添加调料

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

      -- 将用户添加的调料存储

  • 显示对象信息

  需求

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

    0 - 5 分钟:生的

    5 - 10 分钟:半生不熟

    10 - 12 分钟:烤熟了

    超过12分钟:烤糊了

  2、添加调料:

    辣椒,孜然,盐

  • 实例代码
class Kao_Digua():
    def __init__(self):
        self.cook_time = 0
        self.state = "生的"
        self.seasoning = []

    def cook(self,time):
        self.cook_time +=time
        if 0 <= self.cook_time <5:
            self.state = "生的"
        if 5 <= self.cook_time < 10:
            self.state = "半生不熟"

        if 10 <= self.cook_time < 15:
            self.state = "地瓜熟了"
        if self.cook_time>=15:
            self.state = "地瓜糊了"

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

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

a = Kao_Digua()
a.cook(10)
a.add_seasoning("辣椒","孜然","盐")
print(a)

---------------------------------------------------------------
当前的地瓜考了--10--分钟,它的状态是--地瓜熟了--,添加的调料是--[('辣椒', '孜然', '盐')]--

 

标签:__,--,self,面向对象,print,手机,def
From: https://www.cnblogs.com/LoLong/p/16754383.html

相关文章

  • java----面向对象(1)概念,类与对象的创建,构造器,创建对象和内存分析,以及小总结
    面向对象编程1.java的核心思想就是OOP面向过程思想:步骤清晰,第一步做什么,第二步做什么,适合处理一些较为简单的问题2.面向对象思想:分类的斯文模式,思考问题首先会解决问题......
  • 面向对象编程-正则表达式
    我相信不管是学什么语言,是哪个派路的对这几个字应该不会陌生吧,正则表达式终于让我给碰到了,之前看到了说实话那是真看不懂,一点头绪没有,猜我都猜不出是什么意思,今天终于把这个......
  • #yyds干货盘点#【愚公系列】2022年10月 Go教学课程 037-面向对象综合案例-微博
    一、面向对象综合案例-微博微博(Micro-blog)是指一种基于用户关系信息分享、传播以及获取的通过关注机制分享简短实时信息的广播式的社交媒体、网络平台。微博允许用户通过......
  • 面向对象的JAVA
    一个类的结构:  属性==成员变量==field==域、字段方法==成员方法==函数类和对象的关系:类是一个统属概念,对象是独立的个体publicclassClassTest{publicstatic......
  • 面向对象初试和方法进阶
    什么是面向对象以类的方式组织代码,以对象的形式封装数据面向对象的三大特性封装继承多态回顾方法及加深方法的调用packageoop.revise;//Demo1类publicclassD......
  • Lua 实现面向对象
    functionclass(classname,super)assert(classnameandclassname~="","classnamecannotempyt")localvifGameDefince.UNITY_EDITORthen......
  • 面向对象
    面向对象面向过程思想步骤清晰简单,第一步做什么,第二步做什么....面对过程适合处理一些较为简单的问题面向对象思想物以类聚,分类的思维模式,思考问题首先会解决......
  • 面向对象
    创建对象内存分析简单小结类与对象......
  • 实验一面向对象
      #include<iostream>usingnamespacestd;classpoint{public:point(intx0=0,inty0=0);point(constpoint&p);~point()=default;intget_x()con......
  • 面向对象编程
    面向过程&面向对象面向过程思想步骤清晰简单,第一步做什么,第二步做什么......面对过程适合处理一些较为简单的问题面向对象思想物以类聚,分类的思维模式,思考问题......