python3面向对象

1、面向对象编程概述

面向对象编程(OOP)是一种编程范式,它以“对象”为核心,将数据和操作封装在对象中,通过类和对象来实现代码的组织和复用。在Python3中,面向对象编程是其重要的特性之一。

2、类与对象

1.类(Class):类是对象的蓝图或模板,它定义了具有相同属性和方法的对象的集合。类定义了该集合中每个对象所共有的属性和方法。

class MyClass:  def __init__(self, value):  self.value = value  def my_method(self):  print(f"The value is {self.value}")

2.对象(Object):对象是类的实例,它包含了类定义的属性和方法。

obj = MyClass(10)  
print(obj.value)  # 输出: 10  
obj.my_method()  # 输出: The value is 10

3、实例方法

实例方法是定义在类中,并且需要通过对象来调用的方法。它们通常操作对象的状态(即属性)。

class Person:  def __init__(self, name):  self.name = name  def greet(self):  print(f"Hello, my name is {self.name}")  p = Person("Alice")  
p.greet()  # 输出: Hello, my name is Alice

4、封装

封装是面向对象编程的四大特性之一,它主要用来隐藏对象的属性和实现细节,仅对外提供公共访问方式。这样可以保证对象内部状态的安全,并减少代码的复杂性。

class Encapsulated:  def __init__(self, value):  self.__value = value  # 使用双下划线实现私有属性  def get_value(self):  return self.__value  def set_value(self, new_value):  self.__value = new_value

5、继承

继承是面向对象编程的另一个重要特性,它允许一个类(派生类或子类)继承另一个类(基类或父类)的属性和方法。

1.单继承:子类只继承自一个父类。

class Parent:  def say_hello(self):  print("Hello from Parent")  class Child(Parent):  pass  c = Child()  
c.say_hello()  # 输出: Hello from Parent

2.多继承:子类可以继承自多个父类。

class Parent1:  def say_hello1(self):  print("Hello from Parent1")  class Parent2:  def say_hello2(self):  print("Hello from Parent2")  class Child(Parent1, Parent2):  pass  c = Child()  
c.say_hello1()  # 输出: Hello from Parent1  
c.say_hello2()  # 输出: Hello from Parent2

6、多态

多态意味着不同的对象对同一消息作出响应。在Python中,多态是通过方法重写和继承实现的。

class Shape:  def area(self):  pass  class Circle(Shape):  def __init__(self, radius):  self.radius = radius  def area(self):  return 3.14 * self.radius ** 2  class Rectangle(Shape):  def __init__(self, width, height):  self.width = width  self.height = height  def area(self):  return self.width * self.height  def calculate_area(shape):  return shape.area()  circle = Circle(5)  
rectangle = Rectangle(4, 6)  print(calculate_area(circle))  # 调用Circle的area方法  
print(calculate_area(rectangle))  # 调用Rectangle的area方法

7、私有属性与方法

在Python中,通常使用双下划线前缀来实现私有属性和方法。这样,这些属性和方法就不能直接从类的外部访问,但可以通过类内部提供的公共方法进行访问和操作。

class MyClass:  def __init__(self, value):  self.__private_value = value  # 私有属性  def __private_method(self):  # 私有方法  print("This is a private method")  def get_private_value(

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/813987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jsoncpp 编译和使用

原文链接: jsoncpp的编译和使用 jsoncpp 编译出库文件 1.从github仓库下载 2.下载 cmake 工具 3.生成VS项目 4.编译得到需要的库文件 jsoncpp 的使用 查看原文

JAVA基础05-数据包装类,JAVA常用类 介绍

目录 基本数据类型的包装类 定义 String是字符串类型 创建String类型的对象 返回指定索引处的 char 值 返回某字符在字符串中出现的索引 替换 返回此字符串的长度 测试此字符串是否以指定的前缀开始 返回一个新的字符串 大小写转换 拆分字符串 字符串的创建及比较…

基于Springboot的自习室预订系统

基于SpringbootVue的自习室预订系统的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录页 网站首页 公告信息 留言反馈 后台管理 学生信息管理 公告信息管理 留言…

SGI_STL空间配置器源码剖析(四)_S_refill函数

代码如下,解析已在注释中,下次再剖析_S_chunk_alloc函数和__nobjs变量的作用。 /* Returns an object of size __n, and optionally adds to size __n free list.*/ /* We assume that __n is properly aligned. __n校准过(向上临近8&#x…

postgis使用

1 postgreSQL 安装 下载:https://www.postgresql.org/ 2 postgis postgis 属于postgresql插件,安装pg时勾选上postgis 3. 导入shp数据 postgresql可以导入shp数据 4. postgis使用 https://postgis.net/workshops/postgis-intro/creating_db.html

入门:多层感知器Multiple-Layer Perceiver, MLP

本文将简单介绍多层感知器(MLP)的基本概念、原理和应用。MLP是一种前馈人工神经网络,由多层节点组成,每层节点通过权重和偏置与下一层节点相连。MLP在许多领域都有广泛的应用,如分类、回归、自然语言处理等。 本文将分…

Java --- Java语言基础

这个Java可是个好东西,是一门面对对象的程序设计语言,其语法很类似C,所以学过C的伙伴们就很好上手,另外Java对C进行了简化与提高,这个在后期学习会感受到,Java还有很多的类库API文档以及第三方开发包。 这…

Excel与项目管理软件比较?哪个是项目组合管理的最佳选择?

在定义和管理每个正在进行的项目的资源、任务、收益、风险和优先级时,项目组合管理已成为公司的战略要素。为了实现高效的项目组合管理,PMO 经理需要评估Excel 是否满足他们管理项目组合的需求,或者是否应该尝试不同的解决方案,例…

Linux IPC-Daemon: 工业级通信的守护者

引言 在Linux系统中,进程间通信(Inter-Process Communication, IPC)是系统编程的基础之一。IPC机制允许运行在同一个系统上的进程之间共享数据和信息。一个专门设计用于此任务的后台服务程序即为IPC-Daemon。这种守护进程在工业自动化、服务…

攻防演练作为红方,使用Metasploit模拟攻击

在安装Metasploit之后,你可以使用它来执行各种安全测试和模拟攻击。以下是如何使用Metasploit进行基本扫描和攻击的步骤: 1. 启动Metasploit 首先,打开终端并启动Metasploit控制台: msfconsole这个命令会启动Metasploit框架&am…

SRNIC、选择性重传、伸缩性、连接扩展性、RoCEv2优化(六)

参考论文SRDMA(A Scalable Architecture for RDMA NICs ):https://download.csdn.net/download/zz2633105/89101822 借此,对论文内容总结、加以思考和额外猜想,如有侵权,请联系删除。 如有描述不当之处&…

C语言每日一题(68)无重复字符的最长字串

题目链接 无重复字符的最长字串 题目描述 给定一个字符串 s ,请你找出其中不含有重复字符的 最长连续子字符串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子字符串是 "abc",所以其长度为 3。示…

04异常Lambda算法正则

异常 异常是什么? 异常是代码在编译或者执行的过程中可能出现的错误。避免异常的出现,同时处理可能出现的异常,让代码更稳健。 异常分为几类? 编译时异常、运行时异常。编译时异常:没有继承RuntimeExcpetion的异常…

Linux: 工具: tshark 抓到了收方向的ESP明文包?

根据这个描述,看着是正常的, 抓到包之后,可以方便的分析问题,省去在wireshark里解码的问题。 经过调查发现是内核将ESP解开之后,如果是tunnel模式,内核又重新将skb丢给了interface去做处理。这样tshark/tcp…

Java基础(三)--常用工具类

文章目录 第三章、常用工具类一、Java异常1、什么是异常2、异常处理3、常见的异常类型4、throws5、throw6、自定义异常7、异常链 二、包装类1、包装类2、字符串与基本数据类型转换3、包装类的比较 三、String 类1、创建String对象的方法2、String的常用方法3、字符串的存储4、字…

360安全卫士去除广告方法

大安全时代,360 安全卫士为您提供全面安全服务,电脑端下载: https://urlqh.cn/orQqc 在当今数字化时代,网络安全已成为人们日常生活中的重要关切。在这片浩瀚的网络海洋中,360安全卫士犹如一座坚不可摧的灯塔&#xf…

Java23种设计模式理解----创建型模式

工厂模式 我要实现一个发送邮件的功能,一开始我想着是准备用QQ邮箱去发送,于是我在项目消息通知模块定义了一个类 package com.hwq.message;/*** author huangwq* date 2024/4/12* description 描述*/ public class QQMailService {public boolean sen…

UE5+GIS技术应用场景介绍

随着科技的不断发展,虚幻引擎(Unreal Engine)和地理信息系统(Geographic Information System,GIS)技术在众多领域得到了广泛的应用。虚幻引擎5(UE5)作为一款功能强大的实时3D创作工具,与GIS技术的结合,为各行各业带来了前所未有的创新。 一、UE5与GIS的结合方式主要…

基于微信公众号,搭建一套简单的电商支付环境(下)-- 微信公众号的对接

一、接着上文 上文把部署情况介绍了,侧重于网络及代理,本文选择把微信公众号的对接实现介绍一下。 还是那句话,微信官方的文档已非常详细,这里先摘抄一些重要的概念。 其次,待对接微信公众号的接口众多,…

Qt | 视频播放器(multimedia、multimediawidgets)

QT +=multimedia 通俗解释: 此代码行告诉编译器在构建应用程序时包含多媒体库。这意味着您的应用程序将能够播放和显示音频和视频文件。 使用分步说明构建模型: 创建一个新的 Qt 项目。 在 .pro 文件中添加以下行: QT += multimedia 导入必要的多媒体头文件: #include &l…