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

04-面向对象

时间:2024-07-17 21:29:10浏览次数:4  
标签:__ name 04 self 面向对象 print def 属性

DAY-06课堂笔记


面向对象编程介绍


面向对象和面向过程的基本概念

⾯向对象(oop) 是⼀种编程⽅法, 编程思想(即指导如何写代码), 适⽤于 中⼤型项⽬
⾯向过程也是⼀种编程思想, 适⽤于⼩型项⽬


⾯向过程 和 ⾯向对象 都可以实现某个编程的⽬的.


⾯向过程 考虑的是 实现的细节
⾯向对象 考虑的是 结果(谁能做这件事)

面向对象的核心内容 类 和 对象

类和对象的概念

  • 类:是对具有相同特征或者行为的事物的一个统称, 是抽象的,不能直接使用
    • 指代多个事物---很多事物的统称
    • 代码中 类 是由关键字class定义的
  • 对象:是由类创建出来的一个具体存在的事物, 可以 直接使用
    • 指代一个事物
    • 代码中 使用类去创建(实例化)
苹果 ----> 类
红苹果 ----> 类
⼩明⼿⾥的那个红苹果 ----> 对象
狗 ----> 类
⼤⻩狗 -----> 类
李四家的那条 ⼤⻩狗 -----> 对象

类 :就是模具。拥有一定的整体特征。

对象:符合模具的要求,有具体的实现。

当我们把一大堆拥有共同特征的对象的静态特征(属性)和动态特征(行为)都抽离出来后,就可以定义出一个叫做“类”的东西。

类的构成
想要设计一个类, 通常需要满足以下三个要素:
- 类名: 同类事物的名字, 命名要满足大驼峰命名法
- 属性: 同类事物具备的特征
- 方法: 同类事物具备的行为
⾯向对象代码的步骤
1, 设计类 (找类的三要素)
2, 定义类
3, 创建对象(实例化对象)
4, 由对象调⽤类中的⽅法
类的设计
类的设计 就是找三要素. 属性和⽅法 可能会有很多,我们只需要
找到关注的即可

类名的提取:使⽤名词提炼法 分析整个业务流程, 得出的名词,
通 常就是类名

⚠:对于需求中没有提到的属性和方法, 在设计类的时候不要添加进来!

类的设计-案例演练1

需求:
• 小明 今年 18 岁,身高 1.75,每天早上 跑 完步,会去 吃 东西
• 小美 今年 17 岁,身高 1.65,小美不跑步,小美喜欢 吃 东西
类名 :Person
属性 :name  , age  ,height
方法 :run   , eat

类的设计-练习1

需求:
• 一只 黄颜色 的 狗狗 叫 大黄
• 看见生人 汪汪叫
• 看见家人 摇尾巴
类名 :Dog
属性 :color  , name  
方法 :汪汪叫(bark)  , 摇尾巴(shake)

类的设计-案例演练2

需求:
• 进入某 Web 项目登录页面,输入用户名、密码、验证码之后,点击登录按钮可以登录系统
类名 :LoginPage
属性 :username  , paasword ,code  ,登录按钮
方法 :登录方法

类的设计-练习2

需求:
进入某APP项目的下订单页面,输入用户收货地址后,点击提交订单按钮,可以实现下单操作
类名 :Page
属性 :用户收货地址  , 提交订单按钮  
方法 :下单方法

面向对象基本语法


定义类

在Python 中定义类使⽤关键字 class
# 类名: 遵循大驼峰命名法
class 类名:
    # 方法: 定义方式与函数基本相同, 区别是方法的第一个参数必须为 self
    def 方法1(self, 参数列表):
        pass
    
    
    def 方法2(self, 参数列表):
        pass

创建对象

在代码中, 对象是由类对象.
类名() # 就是创建对象
# ⼀般使⽤变量将创建的对象保存起来
变量 = 类名() # ⼀般将这个变量 称为是对象, 本质-->变量中保存的是对象的引⽤地址

案例一

需求:小猫 爱 吃鱼,小猫 要 喝水
类名 :Cat
属性 :/
方法 :吃鱼eat ; 喝水drink
class Cat:
    def eat(self):
        """吃⻥的⽅法"""
        print("吃鱼")


    def drink(self):
        """喝⽔的⽅法"""
        print("喝水")

        
tom = Cat()
tom.drink()
tom.eat()

self 参数

1, 参函数的语法上来看, self 是形参, 名字可以任意的变量
名, 只是我们习惯性叫 self
2, 特殊点: self 是⼀个普通的参数, 按照函数的语法,在调⽤的时候,必须传递实参值, 原因, 是 Python 解释器⾃动的将 调⽤这个⽅法的对象作为参数传递给 self  所以 self 就是调⽤这个⽅法对象
class Cat:
    def eat(self):  # self 是调⽤这个⽅法的对象
        """吃⻥的⽅法"""
        print(f'self:{id(self)}')
        print('⼩猫爱吃⻥...')

# 创建对象
tom = Cat()
# 通过对象 调⽤类中的⽅法
print(f"tom :{id(tom)}")
tom.eat()  # tom 调⽤ ,self 就是 Tom
blue_cat = Cat()

print(f'blue:{id(blue_cat)}')
blue_cat.eat()  # blue_cat 调⽤, self 就是 blue_cat

属性

属性表示事物的特征.
可以给对象添加属性 或者获取对象的属性值.

给对象添加属性:
对象.属性名 = 属性值 # 添加或者修改

获取对象的属性值:
对象.属性名

在⽅法中操作属性(self 是对象):
self.属性名 = 属性值
self.属性名
class Cat:
    def eat(self):  # self 是调⽤这个⽅法的对象
        """吃⻥的⽅法"""
        print(f'self:{id(self)}')
        print(f'⼩猫{self.name}爱吃⻥...')


# 创建对象
tom = Cat()
tom.name = '汤姆'   #------->在类的外面定义属性
print(tom.name)
tom.eat()

blue_cat = Cat()
print(f'blue:{id(blue_cat)}')
blue_cat.name = '蓝猫'
blue_cat.eat()
练习:
Cat 添加属性 姓名, 年龄
eat ⽅法中打印输出 ⼩猫 xx, xx 岁 爱吃⻥
class Cat:
    def eat(self):  # self 是调⽤这个⽅法的对象
        """吃⻥的⽅法"""
        print(f'self:{id(self)}')
        print(f'⼩猫{self.name},{self.age}岁 爱吃⻥...')

tom=Cat()
tom.name="xx"
tom.age="xx"
tom.eat()

在类的内部定义属性

标签:__,name,04,self,面向对象,print,def,属性
From: https://www.cnblogs.com/xcq-bj/p/18308332

相关文章

  • 题解:P10417 [蓝桥杯 2023 国 A] 第 K 小的和
    分析这道题不是板子么。先对序列排序,然后二分答案,设当前答案为\(x\),枚举\(a\)中的数,然后二分查找\(b\)中不大于\(x-a\)的元素个数,累加判断是否不大于\(k\)。然后稍微调一调端点就过了。Code#include<bits/stdc++.h>#include<ext/pb_ds/assoc_container.hpp>#incl......
  • HDU1000,HDU1001,HDU1002,HDU1003,HDU1004
    目录HDU1000——A+BProblem题目描述运行代码代码思路HDU1001——SumProblem题目描述运行代码代码思路HDU1002——A+BProblemII(高精度加法)题目描述运行代码代码思路高精度加法模板HDU1003——MaxSum题目描述运行代码代码思路HDU1004——LettheBall......
  • ubuntu22.04安装idea2024
    1.现有电脑简介系统版本:ubuntu22.04Desktopjava版本:openjdk212.软件部署在官网下载idea软件包,解压并移动到/opt目录,重命名为idea寻找合适的学习版工具,解压应移动到/opt目录,重命名为ja-netfilter2.1.修改ideavmoptions文件#修改/opt/idea/bin/idea64.vmoptions......
  • 2024go语言micro框架搭建踩坑解决(go版本: 1.22.5, 操作系统: ubuntu24.04, 感觉坑和
    在这两天准备学习go语言微服务相关东西时要使用micro框架,因为看的视频是用的低版本go编译器和GOPATH,使用的是旧版本的micro框架,因为找不到和视频对应的框架版本,下载了半天跑不动网上一搜全是22,21甚至更早的搭建micro的文档,很到东西现在不适应了(比如"github.com/golang/pr......
  • HTML2048小游戏(最新版)
    比上一篇文章的2048更好一点。控制方法:WASD键(小写)或页面上四个按钮效果图如下:         源代码在图片后面  源代码 ·HTML·<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="wid......
  • XX2104 培训【C++解决】
    描述某培训机构的学员有如下信息:姓名(字符串)年龄(周岁,整数)去年NOIP成绩(整数,且保证是5的倍数)经过为期一年的培训,所有同学的成绩都有所提高,提升了20%(当然NOIP满分是600分,不能超过这个得分)。输入学员信息,请设计一个结构体储存这些学生信息,并设计一个函数模拟培训......
  • 《JavaSE》---12.<面向对象系列之(继承)>
    目录系列文章目录前言一、继承是什么?1.1继承的概念1.2继承的语法1.3父类子类的别名1.4继承的作用1.4继承的代码实践代码示例:输出结果:小结:二、继承中访问成员变量与方法(this与super的用法)2.1当父类成员变量、方法与子类成员变量、方法名字不同时2.2当父类成员变量......
  • Python进阶(1)--面向对象
    文章目录面向对象类的定义类的构造实例化一个类三大特点封装私有属性继承和多态继承继承的作用多态总结总结面向对象Python是一种广泛使用的解释型、高级编程、通用型编程语言,它以其简洁、易读以及面向对象的特性而闻名。面向对象编程(Object-OrientedProgramm......
  • 04OSPF外部路由计算
    网络中存在部分链路未开启OSPF协议如:。路由器连接外部网络使用静态路由或者BGP协议;·服务器直连的链路未开启OSPF协议。引入外部路由5类LSAase外部路由5类LSAtag的用处:标记外部路由计算1、和ASBR在同一个区域的路由器进行外部路由计算cost=自身到ASBR开销+引......
  • 十天学会Python——第6天:面向对象
    1面向对象1.1类和对象(用类创建对象)类的语法:class类名():执行的代码对象的语法:对象名=类名()classWasher(): #定义类defwash(self): print("可以洗衣服")print(self) #返回结果是跟下面gree的地址一样gree1=Washer()......