首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >面向对象基础

面向对象基础

作者头像
星哥玩云
发布于 2022-09-08 04:27:58
发布于 2022-09-08 04:27:58
25200
代码可运行
举报
文章被收录于专栏:开源部署开源部署
运行总次数:0
代码可运行

一、面向对象思想简介

  • 软件编程就是将我们的思维转变成计算机能够识别语言的一个过程
  • 什么是面向过程? 自上而下顺序执行,逐步求精 其程序结构是按功能划分为若干个基本模块,这些模块形成一个树状结构; 各模块之间的关系尽可能简单,在功能上相对独立 每一模块内部均是由顺序、选择和循环三种基本结构组成 其模块化实现的具体方法是使用子程序 程序流程在写程序时就已决定
  • 什么是面向对象? 把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象 对同类对象抽象出其共性,形成类 类中的大多数数据,只能用本类的方法进行处理 类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信 程序流程由用户在使用中决定
  • 理解面向对象
    • 面向对象是相对面向过程而言
    • 面向对象和面向过程都是一种思想
    • 面向过程 强调的是功能行为 关注的是解决问题需要哪些步骤
    • 面向对象 将功能封装进对象,强调具备了功能的对象 关注的是解决问题需要哪些对象
    • 面向对象是基于面向过程的
  • 把🐘关冰箱 面向过程

面向对象:更加符合人民思考习惯的思想,从执行者变成了指挥者

  • 面向对象的特点 是一种符合人们思考习惯的思想 可以将复杂的事情简单化 将程序员从执行者转换成了指挥者
  • 完成需求时 a、先要去找具有所需的功能的对象来用 b、如果该对象不存在,那么创建一个具有所需功能的对象
  • 类与对象的关系 使用计算机语言就是不断的在描述现实生活中的事物 Python中描述事物通过类的形式体现,类是具体事物的抽象,概念上的定义 对象即是该类事物实实在在存在的个体
  • 面向对象的4大特性 封装、继承、多态、抽象

二、第一个Python类

设计类只关心3样东西

说明

类名:首字母大写,遵守标识符规则 属性:遵守标识符规则 行为(功能、方法、函数):遵守标识符规则

设计类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
类名:Person
属性:name age sex height weight
行为:搬砖、盖房子

创建类

格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class 类名(父类名):
    属性&行为

说明

class:表明这是一个类

类名:类的名字

():父类集合的开始和结束 父类名:父类的名字,定义的类继承自父类,可以不写,默认是object。object是所有类的直接或间接父类

代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Person(object):
    pass

三、使用类实例化对象

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 类
class Person(object):
    pass

格式

对象名 = 类名(参数列表)

说明

参数列表:为了后面给属性进行赋值的

实例化代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
per1 = Person()
print(per1)
per2 = Person()
print(per2)

四、访问对象的方法

对象方法

定义:如Person类中

调用方式:通过实例对象调用

调用格式:对象名.方法名(参数列表)

特性:在对象方法内部可以引用类内部的任何属性和方法 注意:定义对象方法的第一个参数必须是self,其余参数按顺序排列,调用对象方法(函数)时忽略self self:代表一个对象,哪个对象调用的对象方法,那么在该方法中self就代表哪个对象

类方法

定义:如Person类中

调用方式:用类名调用(也可以使用对象调用,但是很少这么用)

调用格式:类名.方法名(参数列表)

特性:在类方法内部可以引用类的属性和方法 注意:定义对象方法的第一个参数必须是cls,其余参数按顺序排列,调用类方法(函数)时忽略cls cls:代表当前对象的类的类名

静态方法

定义:如Person类中

调用方式:类和实例对象均可调用

调用格式:类名/对象名.方法名(参数列表)

特性:无论用类调用还是用实例对象调用,都无法获取到内部的属性和方法,完全独立的一个方法 作用:常用作工具方法

代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Person(object):
    # 定义对象方法
    def run(self):
        print("----------------run", self)
        #对象方法内部调用其他对象方法
        self.eat("banana")
        # 对象方法内部调用其他类方法
        self.talk("nice")
    def eat(self, food):
        print("----------------eat", food)

    # 定义类方法
    @classmethod
    def say(cls):
        print("----------------say", cls)
        # 在类方法内部调用其他类方法
        cls.talk("handsome")
    @classmethod
    def talk(cls, word):
        print("----------------talk", word)

    # 定义静态方法
    @staticmethod
    def play():
        print("----------------play")



# 实例化一个对象
per = Person()
print(per)
print(Person)

# 调用对象方法
per.run()
per.eat("apple")
# Person.run() #报错
# Person.run(per) #类调用对象方法,需要传递一个对象,实参对象会给对象方法中的self赋值。注意帅的人基本不这么用

# 调用类方法
Person.say()
Person.talk("good")
# per.say() #使用实例对象调用了类方法,最好不要这么用

print("-------------------------------")
per.run()
Person.say()

print("-------------------------------")
per.play()
Person.play()

五、类属性

定义

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Person(object):
    # 定义类属性
    # 当多个类的对象的属性值需要相同时可以使用类属性
    name = "lilei"
    age = 18
    sex = "男"

调用

可以通过类调用,也可以通过对象调用

使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 实例化对象时,每一个对象的属性值都相同
per1 = Person()
per2 = Person()

#通过对象方法类属性   对象名.类属性名
print(per1.name, per1.age, per1.sex)
print(per2.name, per2.age, per2.sex)

# 修改对象属性值,如果对象属性不存在则变为增加对象属性
per1.name = "liudh"
per2.name = "daol"
print(per1.name, per2.name, Person.name)

问题

使用类创建的所有对象的属性初始值都是一样的

六、对象的初始化状态

需求

类创建的多个对象的属性的初始值是不同的

定义

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Person(object):
    # 类属性
    country = "中国"

    # 构造方法:在使用类创建实例对象时自动调用,目的是初始化对象的内容
    def __init__(self, name, age, sex):
        # 定义对象属性
        # 只能对象调用
        self.name = name
        self.age = age
        self.sex = sex

使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建对象时给每个对象的属性进行赋值
per1 = Person("daol", 45, "男")
per2 = Person("liudh", 55, "男")

print(per1.name)
print(per2.name)

# print(Person.name) # 类中没有name属性,且类无法调用对象属性

__new__方法

说明:是一个类方法,在使用类实例化对象时,在__init__之前调用,在堆内存中开辟空间,并返回空间的首地址,该片内存空间就代表创建的对象(混沌对象)

使用:以后是使用__new__实现单例类,否则基本不会使用

七、析构函数

作用

释放一些不必要的内存

使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Person(object):
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex

    def __del__(self):
        print("-----del-----")

调用:在释放对象时自动调用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
per = Person("liudh", 55, "男")
# 释放对象
del per
print(per)

# num = 10
# #释放掉后面的内容
# del num
# print(num) 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
10 . Python之面向对象
类中的方法一般都是通过对象执行的(除去类方法,静态方法外),并且对象执行这些方法都会自动将对象空间传给方法中的第一个参数self
iginkgo18
2020/09/27
4430
10 . Python之面向对象
Python全栈开发之面向对象
类是对一群具有相同特征或者行为的事物统称,是抽象的,不能直接使用,特征被称为属性,行为被称为方法,类就是一个模板
py3study
2020/01/10
5130
面向对象
面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)
周小董
2019/03/25
6520
面向对象
Python|面向对象
#一、类、对象定义及使用 #定义类语法:class 类名(父类):代码块注意:()可有可无 #class Student: #class Student(): #创建对象(实例)语法:对象名=类名() 注意:Java语言在实例化对象是,采用new关键字,而Python语言不需要。 #student=Student() #isinstance()语法:isinstance()是检测一个对象是否是一个类的实例,语法格式:isinstance(对象,类),结果返回True和False # class Stu
py3study
2020/01/19
4900
Python 【面向对象】
Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。
IT茂茂
2020/03/19
1.7K0
手撕Python之面向对象
下面我将通过一个简单的例子来展示这两种编程范式的区别。假设我们要编写一个程序,用于计算一个矩形的面积。
Undoom
2024/09/23
1190
手撕Python之面向对象
Python升级之路( Lv6 ) 面向对象基础
第一章 Python 入门 第二章 Python基本概念 第三章 序列 第四章 控制语句 第五章 函数 第六章 面向对象基础
时间静止不是简史
2022/06/12
6070
Python升级之路( Lv6 ) 面向对象基础
🐒🐒🐒**面向对象的编程,顾名思义就是面向你的男朋友or女朋友(俗称对象),去进行编程!** 这时候有的小伙伴会问啦:那我没对象怎么面向对象编程呢\~
🐒🐒🐒面向对象的编程,顾名思义就是面向你的男朋友or女朋友(俗称对象),去进行编程! 这时候有的小伙伴会问啦:那我没对象怎么面向对象编程呢~
是Dream呀
2024/05/08
1520
Python学习入门基础 — 第六章 面向对象基础
Python学习入门基础 -- 第六章 面向对象基础
Java架构师必看
2021/07/19
3650
Python学习入门基础 — 第六章 面向对象基础
Python 面向对象
# Python 面向对象 # 编程思想 编程届的两大阵营 面向过程 面向对象 区别 实物比较简单,可以用线性的思想去解决 事物比较复杂,使用简单的线性思维无法解决 共同点 面向过程和面向对象都是解决实际问题的一种思维方式 二者相辅相成,并不是对立的,解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间的复杂的关系。方便我们分析整个系统,具体到微观操作,任然使用面向过程方式来处理 # 类与对象 类 类别,分门别类,物以类聚,人类,鸟类,动物类,植物类... 类是多个类似事物组成的群体的
用户9615083
2022/12/25
3680
Python 面向对象
Python教程第6章 | Python面向对象
如果你学过 Java ,就知道 Java 的编程思想就是:万事万物皆对象。Python 也不例外,在解决实际问题的过程中,可以把构成问题事务分解成各个对象。
仲君Johnny
2024/01/24
2510
Python教程第6章 | Python面向对象
面向对象-访问限制
使用@property让私有属性可以使用点语法。但本质上还是调用公有方法访问的私有属性,只不过看起来比较美丽
星哥玩云
2022/09/08
1.3K0
第四节:详细讲解Java中的类和面向对象思想
大家好,我是 Vic,今天给大家带来详细讲解Java中的类和面向对象思想的概述,希望你们喜欢
达达前端
2019/07/03
3300
Python 面向对象的总结_
版权声明:Copyright © https://blog.csdn.net/zzw19951261/article/details/80261328
zhengzongwei
2019/07/31
3710
最新Python大数据之Python基础【十】学生管理系统面向对象版
文章目录 1、在子类中调用父类方法 2、多态 3、类属性 4、类方法 5、静态方法 6、面向对象案例 7、异常捕获 8、捕获指定类型的异常 9、else 和 finally 10、自定义异常抛出 11、模块的导入 12、自定义模块 13、模块查询顺序 14、`__all__`的使用方式 15、包的的导入 16、学生管理系统面向对象版 1、在子类中调用父类方法 super().方法名() 类名.方法名(self) spuer(要从哪一个类的上一级类开始查找, self).方法名() 子类调
Maynor
2023/01/14
1.2K0
9-面向对象1
面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。
用户3106371
2019/03/11
4560
9-面向对象1
Python之面向对象一
引子 小游戏:人狗大战 角色:人和狗 角色属性:姓名,血量,战斗力和性别(种类) 技能:打/咬 用函数实现人打狗和狗咬人的情形 def Dog(name,blood,aggr,kind): dog = { 'name':name, 'blood':blood, 'aggr':aggr, 'kind':kind } def bite(person): person['blood'] -= dog['aggr
新人小试
2018/04/12
9080
python面向对象编程指南 pdf_python面向对象的三个基本特征
  抽象是隐藏多余细节的艺术。在面向对象的概念中,抽象的直接表现形式通常为类。虽然Python是解释性语言,但是它是面向对象的,从设计之初就已经是一门面向对象的语言。Python基本上提供了面向对象编程语言的所有元素,如果你已经至少掌握了一门面向对象语言,那么利用Python进行面向对象程序设计将会相当容易。下面就来了解一下如何在Python中进行对象编程。
全栈程序员站长
2022/11/16
8310
7.0 Python 面向对象编程
python是一种面向对象的编程语言,面向对象编程(Object-Oriented Programming,OOP)是一种编程思想,其核心概念是“对象”。对象是指一个具有特定属性和行为的实体,而面向对象编程就是通过对这些实体进行抽象、分类、封装和继承等操作,来实现程序的结构和逻辑。在python中,我们可以通过定义类、创建实例和调用方法等方式,来实现面向对象编程的思想,从而编写出更加灵活、可扩展、易维护的程序。
王 瑞
2023/08/14
3370
实验七 面向对象程序设计
在程序中使用对象来映射现实中的事物,使用对象间的关系来描述事物之间的联系,这种思想就是面向对象。面向对象编程有两个非常重要的概念:类和对象。对象是面向对象编程的核心。具有相似特征和行为的事物的集合统称为类,对象是根据类创建的,一个类可以对应多个对象。类是由3部分组成的:(1)类的名称:类名,首字母必须大写,比如Person;(2)类的属性:一组数据,比如性别;(3)类的方法:允许进行操作的方法,比如说话。使用class关键字来声明一个类,基本格式如下:
背雷管的小青年
2020/06/08
1.9K0
相关推荐
10 . Python之面向对象
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档