python之面向对象

ops/2024/10/18 8:25:17/

目录

1. 面向对象和面向过程思想

2. 类和对象

3. 类的组成

3.1. 成员属性

3.2 成员属性

3.2 成员方法

4. 特殊方法和参数

4.1 成员方法的self参数

4.2 __init__方法

4.3 __str__方法

5. 私有化

5.1 属性私有化

5.2 方法私有化


1. 面向对象和面向过程思想

面向对象面向过程都是一种编程思想,就是解决问题的思路

  • 面向过程:POP(Procedure Oriented Programming)面向过程语言代表是c语言
  • 面向对象:OOP(Object Oriented Programming)常见的面向对象语言包括:java c++ go python koltin
  • 面向对象,强调的是对象(实体)
  • 面向对象是一种思想,更加符合人的思维习惯
  • 面向对象使复杂的问题简单化了
  • 面向对象的出现,让曾经在过程的执行者,变成了对象的指挥者

2. 类和对象

类和对象是面向对象非常重要的概念

  • 类是描述了一种类型(相当于图纸)
  • 对象是这个类型的具体实现(相当于图纸具体实现)

定义类和创建对象

类的定义格式:

class 类名:

        pass

 创建对象:

对象名 = 类名()

3. 类的组成

类可以描述世间万物,类都需要有类名,也应该具备一些属性行为

  • 类的关键字:class
  • 类的名称:类名
  • 类的属性:一组数据
  • 类的方法:允许进行操作的方法(行为)

3.1. 成员属性

成员属性的定义需要在初始化方法__init__方法下定义

格式:

python">class Person:def __init__(self, name, age):# 成员属性self.name = nameself.age = age# 创建对象
p = Person('张三', 30)
# 访问成员属性
print(p.name)
print(p.age)

在创建对象时,属性值可以由外部传进来,也可以在初始化方法里设置为任意值

3.2 成员属性

成员属性的定义需要在初始化方法 __int__ 方法下定义

python">class Person:def __init__(self, name, age):# 成员属性self.name = nameself.age = age# 创建对象
p = Person('张三', 30)
# 访问成员属性
print(p.name)
print(p.age)

在创建对象时,属性值可以由外部传进来,也可以在初始化方法里设置为任意值

3.2 成员方法

格式:def 函数名(self):

python">class Person:# 定义成员方法 say_hellodef say_hello(self):print('hello')# 定义成员方法rundef run(self):print('跑')# 创建对象
p = Person()
# 调用成员方法
p.say_hello()

注意:

成员方法都会默认有参数self,调用的时候不需要传递self

4. 特殊方法和参数

4.1 成员方法的self参数

self 表示调用该方法的对象

对象调用方法时,python解释器会把这个对象作为第一个参数传递给方法

通过 self 也可以获取对象的属性,调用对象的其他成员方法

python">class Person:def __init__(self, name, age):# 定义成员属性self.name = nameself.age = agedef say_hello(self):# 通过self访问成员属性print(self.name)# 对象
p = Person('张三', 30)
p.say_hello()

4.2 __init__方法

__int__是一个内置方法,当对象创建时会自动执行__int__方法

python"># 定义类
class Person:def __init__(self):print('执行了init方法')# 创建对象
p1 = Person()
p2 = Person()

4.3 __str__方法

也是一个内置对象,用于将对象转化为适于人阅读的形式

python">class Person:def __init__(self,name,age):# 成员属性self.name = nameself.age = agedef __str__(self):'''以字符串输出对象,把对象变成我们能够读懂的形式输出出来:return:'''return 'name:{}, age:{}'.format(self.name,self.age)# 创建对象
p1 = Person('张三',30)
p2 = Person('李四',40)
print(p1)
print(p2)

5. 私有化

私有化作用:保证类中数据安全

属性或者方法设置为不能在外部访问,就是私有化

私有化包括:属性私有化,方法私有化

5.1 属性私有化

格式:两个下划线 __

self.__属性名 = 属性值

python">class Circle:def __init__(self,radius):# 半径self.radius = radius# 私有化圆周率属性 self.__PI = 3.1415926def perimeter(self):'''求圆的周长:return: 圆的周长'''return 2 * self.__PI * self.radius

5.2 方法私有化

方法的私有化方式和属性私有化方式一样

python">class Person:def __say_hello(self):print('hello')


http://www.ppmy.cn/ops/16330.html

相关文章

vscode中对 python 快速增加header 描述

在首选项→配置用户代码片段→python 然后再 Code/User/snippets/python.json文件中写入 {// Place your snippets for python here. Each snippet is defined under a snippet name and has a prefix, body and // description. The prefix is what is used to trigger the …

深度学习基础之《TensorFlow框架(13)—二进制数据》

一、CIFAR-10二进制数据集介绍 1、CIFAR-10数据集 CIFAR-10数据集由10个类别的60000个32x32彩色图像组成,每个类别有6000个图像。有50000个训练图像和10000个测试图像 2、数据集分为五个训练批次和一个测试批次,每个批次有10000个图像 3、data_batch_…

仿redis的zset类型

前言 模仿redis的zset数据类型,写了Java内存版,写这个的背景是做自己的小项目,服务器资源有限,不想引入redis,但同时又想使用zset的排序功能,所以就自己写了一个简化版本。 package com.fjding.exam.utils…

Python框架:Django和Flask介绍应用场景和优缺点

Python框架:Django和Flask介绍应用场景和优缺点 Django 和 Flask 都是 Python 语言的 Web 框架,它们用于构建 Web 应用程序。以下是它们的基本介绍、使用方式、优点、缺点以及适用场景的对比。 Django 是什么 Django 是一个高级的 Web 框架&#xff0c…

从0开始用C写贪吃蛇(基于链表)

目录 1. 游戏背景 2. 游戏效果演示​编辑​编辑​编辑 3. 实现目标 4. 技术要点 5. 控制台程序 5.1 设置控制台窗口的长宽和名字 5.2 控制台屏幕上的坐标COORD 6.Win32 API 6.1 GetStdHandle 6.2 GetConsoleCursorInfo 6.3 CONSOLE_CURSOR_INFO 6.4 SetConsole…

Cgicc搭建交叉编译环境(移植到arm)

Cgicc GUN Project官网连接:Cgicc- GNU Project - Free Software Foundation 1. 下载源码 Cgicc下载地址: [via http] Index of /gnu/cgicc [via FTP] ftp://ftp.gnu.org/gnu/cgicc/ 目前最新版:3.2.20 2. 源码构建原理 一般&#xff…

【threejs教程9】threejs加载360全景图(VR)的两种方法

目录 前言 1.Equirectangular映射背景 实现步骤 1.初始化TextureLoader 2.加载Equirectangular纹理 3.配置映射类型和颜色空间 4.应用背景 完整代码如下 2.立方体贴图背景 实现步骤 1.创建CubeTextureLoader 2.加载立方体贴图 3.应用背景 完整代码如下 …

【网络安全】安全事件管理处置 — 事件分级分类

专栏文章索引:网络安全 有问题可私聊:QQ:3375119339 目录 一、安全事件分级 二、应急事件分级 三、安全事件分类 四、常见安全事件原因分析 1.web入侵 2.漏洞攻击 3.网络攻击 一、安全事件分级 在对安全事件的应急响应过程中&#xf…