二十八、Python基础语法(面向对象-下)

一、self

从函数的语法上来看, self 是形参 , 是一个普通的参数,那么在调用的时候,就需要传递实参值。从调用上看, 我们没有给 self 这个形参传递实参值, 但是 Python 解释器会自动的将调用这个方法的对象,作为实参值传递给 self。

class Dog:def eat(self):print('小狗吃骨头')print(id(self))dog1 = Dog()
print(id(dog1))
dog1.eat()
print('*' * 20)
dog2 = Dog()
print(id(dog2))
dog2.eat()

运行结果:

总结:self 就是调用这个方法的对象

二、属性

属性是每个对象都有的,每个对象都会由内存空间来保存自己的属性学习,属性可以在类内部处理,也可以在类外部处理,不是是在内部还是外部,都是通过对象操作的。

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

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

class Dog:def eat(self):print(f'小狗{self.name}吃骨头')dog1 = Dog()
# 添加属性
dog1.name = '旺财'
dog1.eat()
print('*' * 20)
dog2 = Dog()
# 添加属性
dog2.name = '阿黄'
dog2.eat()

运行结果:

 

注意:一般不在类外部操作对象的属性,添加属性的操作,都写在 __init__ 方法里面

三、魔法方法

魔法方法:在Python 中有一类方法,以两个下划线开头, 两个下划线结尾, 并且在满足某个条件的情况下会自动调用。

1.__init__ 初始化方法

__init__用来给对象添加属性,添加的所有的属性都写在这个方法中,在创建对象时,会自动调用。

class Dog:def __init__(self):print('我被调用了')Dog()  # 创建对象,会调用
dog1 = Dog()  # 会
dog2 = dog1  # 不会
class Dog:# 给对象添加属性def __init__(self, name):self.name = namedef eat(self):print(f'小狗{self.name}吃骨头')dog1 = Dog('旺财')
dog1.eat()
print('*' * 20)
dog2 = Dog('阿黄')
dog2.eat()

运行结果:

2.__str__ 方法

__str__作用自定义返回对象的属性说明信息,print(对象) 时,会自动调用 __str__ 方法,会输出__str__方法的返回值。

class Dog:# 给对象添加属性def __init__(self, name):self.name = namedef __str__(self):return f'这个对象包含一个属性,名称是{self.name}'def eat(self):print(f'小狗{self.name}吃骨头')dog1 = Dog('旺财')
print(dog1)  # 这个对象包含一个属性,名称是旺财
print('*' * 20)
dog2 = Dog('阿黄')
print(dog2)  # 这个对象包含一个属性,名称是阿黄

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

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

相关文章

【Leecode】Leecode刷题之路第37天之解数独

题目出处 37-解数独-题目出处 题目描述 个人解法 思路: todo代码示例:(Java) todo复杂度分析 todo官方解法 37-解数独-官方解法 方法1:回溯 思路: 代码示例:(Java) p…

【golang/navmesh】使用recast navigation进行寻路

目录 说在前面安装使用可视化 说在前面 go version:1.20.2 linux/amd64操作系统:wsl2detour-go版本:v0.2.0github:这里,求star! 安装 使用go mod安装即可go get github.com/o0olele/detour-go使用 使用场景模型构建n…

qt QFormLayout详解

QFormLayout 是 Qt 框架中用于创建表单布局的一个类,适合于将标签和输入控件整齐地排列在一起。它可以帮助开发者轻松构建用户输入界面,尤其是在处理表单时。 QFormLayout以两列的形式展示其子项,常用于创建“标签-字段”对的布局。其中&…

电脑小白必看|电脑安装常用软件简单小技巧

前言 最近同事换了新电脑,问我怎么下载常用软件? 我反问了一下:什么常用软件呢? 她说:微信、QQ、钉钉、酷狗、wps这种类型的软件。 哦豁,那其实很简单,但很多人还是没学会。小白之前分享过一…

RocketMQ 消息消费失败的处理机制

在分布式消息系统中,处理消费失败的消息是非常关键的一环。 RocketMQ 提供了一套完整的消息消费失败处理机制,下面我将简要介绍一下其处理逻辑。 截图代码版本:4.9.8 步骤1 当消息消费失败时,RocketMQ会发送一个code为36的请求到…

数据结构算法学习方法经验总结

DSA:Data Structures, Algorithms, and Problem-Solving Techniques 三大核心支柱 一次学习一个主题,按照如下顺序学习 如何开始学习新的主题 学习资源 https://www.youtube.com/playlist?listPLDN4rrl48XKpZkf03iYFl-O29szjTrs_O (Algorithms) https://ww…

Linux 操作系统的诞生与发展历程

目录 背景与起源 诞生过程 特点与影响 背景与起源 历史背景: 1980年代末至1990年代初,计算机操作系统市场主要由商业软件主导,如DOS、Windows以及Unix的各种版本。然而,这些系统往往价格昂贵,且源代码不开放&#…

第三届北京国际水利科技博览会将于25年3月在国家会议中心召开

由中国农业节水和农村供水技术协会、北京水利学会、振威国际会展集团等单位联合主办的第三届北京国际水利科技博览会暨供水技术与设备展(北京水利展)将于2025年3月31日至4月2日在北京•国家会议中心举办! 博览会以“新制造、新服务、新业态”…

贪心算法习题其二【力扣】【算法学习day.19】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴&am…

Linux中NFS配置

文章目录 一、NFS介绍1.1、NFS的工作流程1.2、NFS主要涉及的软件包1.3、NFS的主要配置文件 二、安装NFS2.1、更新yum2.2、安装NFS服务2.3、配置NFS服务器2.4、启动NFS服务2.5、配置防火墙(如果启用了防火墙,需要允许NFS相关的端口通过)2.6、生…

Docker | 将本地项目发布到阿里云的实现流程

发布到阿里云 本地镜像发布到阿里云流程具体流程1. docker commit 生成新镜像文件2. 查看镜像3. 阿里云开发者平台选择控制台,进入容器镜像服务,选择个人实例创建命名空间仓库名称进入管理界面获得脚本推送到阿里云 补充: docker tag 命令基本…

Qt指定程序编译生成文件的位置

shadow build: [基础]Qt Creator 的 Shadow build(影子构建)-CSDN博客 影子构建:将源码路径和构建路径分开(生成的makefile文件和其他产物都不放到源码路径),以此来保证源码路径的清洁。 实验1: 我创建了两个项目:…

嵌入式常用功能之通讯协议1--串口

嵌入式常用功能之通讯协议1--串口(本文) 嵌入式常用功能之通讯协议1--IIC 嵌入式常用功能之通讯协议1--SPI(待定) ...... 一、串口协议简介 1,简介 UART(异步串行通信):时钟基准不是同一个&#xff08…

「Mac畅玩鸿蒙与硬件10」鸿蒙开发环境配置篇10 - 项目实战:计数器应用

本篇将通过一个简单的计数器应用,带你体验鸿蒙开发环境的实际操作流程。本项目主要练习组件的使用、事件响应和状态管理,帮助开发者熟悉基本的应用构建流程。 关键词 计数器应用组件操作事件响应状态管理HarmonyOS 应用开发一、创建计数器项目 1.1 在 DevEco Studio 中新建项…

Python | Leetcode Python题解之第513题找树左下角的值

题目: 题解: class Solution:def findBottomLeftValue(self, root: Optional[TreeNode]) -> int:q deque([root])while q:node q.popleft()if node.right:q.append(node.right)if node.left:q.append(node.left)ans node.valreturn ans

操作系统实验记录

实验零:虚拟机安装 一、安装vmware虚拟机 与vmware匹配搜索结果 - 考拉软件 (rjctx.com),下载17.5.1版本即可下载后对照教程安装 二、下载iso虚拟驱动 搜索清华大学镜像网站,点击再搜ubuntu,下载这个4.1GB的iso文件安装后打开vmware虚拟机 三、配置vmware虚拟机 右键管…

适配器模式:类适配器与对象适配器

适配器模式是一种结构性设计模式,旨在将一个接口转换成客户端所期望的另一种接口。它通常用于解决由于接口不兼容而导致的类之间的通信问题。适配器模式主要有两种实现方式:类适配器和对象适配器。下面,我们将详细探讨这两种方式的优缺点及适…

Python毕业设计选题:基于Python的无人超市管理系统-flask+vue

开发语言:Python框架:flaskPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 系统首页 超市商品详情 购物车 我的订单 管理员登录界面 管理员功能界面 用户界面 员…

CSS ——相关链接制作

文章目录 需求分析代码注意 需求 制作一个相关链接 分析 代码 html <div class"box"><div class"title"><span>相关链接</span></div><div class"links"><span><a href"https://www.baidu…

qt QComboBox详解

QComboBox是一个下拉选择框控件&#xff0c;用于从多个选项中选择一个。通过掌握QComboBox 的用法&#xff0c;你将能够在 Qt 项目中轻松添加和管理组合框组件&#xff0c;实现复杂的数据选择和交互功能。 重要方法 addItem(const QString &text)&#xff1a;将一个项目添…