Python 面向对象编程:类、对象、初始化和方法详解
Python 是一种面向对象的编程语言。在 Python 中,几乎所有东西都是对象,都具有其属性和方法。
类似于对象构造函数或用于创建对象的“蓝图”的类。
创建一个类
要创建一个类,请使用关键字 class:
示例,创建一个名为 MyClass 的类,其中包含一个名为 x 的属性:
class MyClass:
x = 5
创建对象
现在,我们可以使用名为 MyClass 的类来创建对象:
示例,创建一个名为 p1 的对象,并打印 x 的值:
p1 = MyClass()
print(p1.x)
init() 函数
上面的示例是最简单形式的类和对象,不太适用于实际应用程序。要理解类的含义,我们必须了解内置的 init() 函数。所有类都有一个名为 init() 的函数,该函数在初始化类时始终执行。使用 init() 函数来为对象属性分配值,或者在创建对象时需要执行的其他操作:
示例,创建一个名为 Person 的类,使用 init() 函数为 name 和 age 分配值:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("John", 36)
print(p1.name)
print(p1.age)
注意: 每次使用类创建新对象时,init() 函数都会自动调用。
str() 函数
str() 函数控制当类对象表示为字符串时应返回什么。如果未设置 str() 函数,则返回对象的字符串表示:
示例,没有 str() 函数的对象的字符串表示:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("John", 36)
print(p1)
示例,带有 str() 函数的对象的字符串表示:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"{self.name}({self.age})"
p1 = Person("John", 36)
print(p1)
对象方法
对象也可以包含方法。对象中的方法是属于对象的函数。让我们在 Person 类中创建一个方法:
示例,插入一个打印问候的函数,并在 p1 对象上执行它:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def myfunc(self):
print("Hello my name is " + self.name)
p1 = Person("John", 36)
p1.myfunc()
注意: self 参数是对类的当前实例的引用,并用于访问属于类的变量。
self 参数
self 参数是对类的当前实例的引用,并用于访问属于类的变量。它不一定要命名为 self,您可以根据需要命名它,但它必须是类中任何函数的第一个参数:
示例,使用 mysillyobject 和 abc 代替 self:
class Person:
def __init__(mysillyobject, name, age):
mysillyobject.name = name
mysillyobject.age = age
def myfunc(abc):
print("Hello my name is " + abc.name)
p1 = Person("John", 36)
p1.myfunc()
修改对象属性
您可以像这样修改对象的属性:
示例,将 p1 的年龄设置为 40:
p1.age = 40
删除对象属性
您可以使用 del 关键字来删除对象的属性:
示例,从 p1 对象中删除 age 属性:
del p1.age
删除对象
您可以使用 del 关键字来删除对象:
示例,删除 p1 对象:
del p1
pass 语句
类定义不能空,但如果由于某种原因类定义没有内容,请插入 pass 语句以避免出错。
示例
class Person:
pass
最后
为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding,或者扫描下方二维码,关注公众号,即可获取最新文章。
看完如果觉得有帮助,欢迎点赞、收藏和关注

Python 面向对象编程:类、对象、初始化和方法详解的更多相关文章
- 【转】Python的hasattr() getattr() setattr() 函数使用方法详解
Python的hasattr() getattr() setattr() 函数使用方法详解 hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值 ...
- StringUtils类API及使用方法详解
StringUtils类API及使用方法详解 StringUtils方法概览 判空函数 1)StringUtils.isEmpty(String str) 2)StringUtils.isNotEmp ...
- Python学习之旅—生成器对象的send方法详解
前言 在上一篇博客中,笔者带大家一起探讨了生成器与迭代器的本质原理和使用,本次博客将重点聚焦于生成器对象的send方法. 一.send方法详解 我们知道生成器对象本质上是一个迭代器.但是它比迭代器对 ...
- Python 面向对象编程——类定义与对象
<类定义与对象声明> 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对 ...
- python -- 面向对象编程(类、对象)
一.类 类是用来描述具有相同的属性和方法的对象的集合. 它定义了该集合中每个对象共同拥有的属性和方法. 类是一个独立的单位,它有一个类名,其内部包括成员变量和成员方法,分别用于描述对象的属性和行为. ...
- Python面向对象编程 -- 类和实例、访问限制
面向对象编程 Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程 ...
- Python面向对象编程-类的封装,继承、多态
面向对象是一种程序设计思想,对象作为程序基本单元,包含了数据和操作数据的函数. 面向对象的三大特点--数据封装.多态和继承. #类的创建,class关键字,类名大写,object表示从哪个类继承而来, ...
- python面向对象-4类的继承与方法的重载
1.类的继承与方法的重载 上面就是先定义了一个类A,然后由定义了一个类B,B继承了类A,这样B就有了A的非私有属性和方法. class Washer: company='ZBL' def __init ...
- python学习笔记8--面向对象--属性和方法详解
属性: 公有属性 (属于类,每个类一份) 普通属性 (属于对象,每个对象一份) 私有属性 (属于对象,跟普通属性相似,只是不能通过对象直接访问) 方法:(按作用) 构造方法 析构函数 方法: ...
- Java的Graphics类进行绘图的方法详解
Graphics类提供基本绘图方法,Graphics2D类提供更强大的绘图能力. Graphics类提供基本的几何图形绘制方法,主要有:画线段.画矩形.画圆.画带颜色的图形.画椭圆.画圆弧.画多边形等 ...
随机推荐
- 近期uniapp使用与总结
弟弟是个uniapp小白,有什么问题欢迎指正. 吃什么饭对于有选择困难的我来说是个大问题,所以想做个根据自己输入的食物随机分配每餐吃的东西,然后就准备用uniapp做这样一个软件,主要是uniapp打 ...
- ZEGO全新语音聊天解决方案,4步搭建爆火的语音聊天室
最近,国外一款语音聊天软件成功火出圈. 与此同时,该类产品也引发了国内互联网的关注,除了争相下载试用之外,不少社交.泛娱乐行业从业者也表示要跟进对应玩法. 据了解,不少泛娱乐玩家已经在加班加点抢占先机 ...
- PaddleSharp:跨越一年的版本更新与亮点
PaddleSharp:跨越一年的版本更新与亮点 我始终坚信,开源社区是技术进步的重要推动力,也是我抽出我业余时间,投入到PaddleSharp这个项目的原因,这个项目充分展现了.NET在复杂计算领域 ...
- Linux-用户管理命令(必须是超级管理员-root)
useradd [名字] 创建一个新用户 (home 下创建) useradd -d [路径][名字] 路径中的名字是文件 , 登录用的后面的名字 passwd [用户名] 设置密码, ...
- Vue Cli起别名
vue cli 3的写法 module.exports = { configureWebpack: { resolve:{ extensions:[], alias:{ 'assets':'@/ass ...
- .NET周刊【7月第5期 2023-07-30】
国内文章 PaddleSharp:跨越一年的版本更新与亮点 https://www.cnblogs.com/sdflysha/p/20230724-paddlesharp-in-a-year.html ...
- 【pandas小技巧】--拆分列
拆分列是pandas中常用的一种数据操作,它可以将一个包含多个值的列按照指定的规则拆分成多个新列,方便进行后续的分析和处理.拆分列的使用场景比较广泛,以下是一些常见的应用场景: 处理日期数据:在日期数 ...
- 桌面应用打包:pyinstaller
1 背景 在使用python开发一些小工具时,如果其他人电脑中没有python环境或者没有安装相应的第三方库,是没办法运行的,而要求对方安装又不现实,尤其是对方不是技术人员,因此如何将一个独立的pyt ...
- 【技术积累】Linux中的命令行【理论篇】【八】
basename命令 命令介绍 在Linux中,basename命令用于从给定的路径中提取文件名或目录名.它的语法如下: basename [选项] [路径] 命令介绍 选项:-s, --suffix ...
- 国标GB28181视频平台EasyGBS视频监控平台无法播放,抓包返回ICMP排查过程
国标GB28181视频平台EasyGBS是基于国标GB/T28181协议的行业内安防视频流媒体能力平台,可实现的视频功能包括:实时监控直播.录像.检索与回看.语音对讲.云存储.告警.平台级联等功能.国 ...