当前位置: 首页 > news >正文

【Python入门第二十二天】Python 类和对象

Python 类/对象

Python 是一种面向对象的编程语言。

Python 中的几乎所有东西都是对象,拥有属性和方法。

类(Class)类似对象构造函数,或者是用于创建对象的“蓝图”。

创建类

如需创建类,请使用 class 关键字:

实例

使用名为 x 的属性,创建一个名为 MyClass 的类:

class MyClass:x = 5

运行实例

<class '__main__.MyClass'>

创建对象

现在我们可以使用名为 myClass 的类来创建对象:

实例

创建一个名为 p1 的对象,并打印 x 的值:

p1 = MyClass()
print(p1.x)

运行实例

7

init() 函数

上面的例子是最简单形式的类和对象,在实际应用程序中并不真正有用。

要理解类的含义,我们必须先了解内置的 init() 函数。

所有类都有一个名为 init() 的函数,它始终在启动类时执行。

使用 init() 函数将值赋给对象属性,或者在创建对象时需要执行的其他操作:

实例

创建名为 Person 的类,使用 init() 函数为 name 和 age 赋值:

class Person:def __init__(self, name, age):self.name = nameself.age = agep1 = Person("Bill", 63)print(p1.name)
print(p1.age)

运行实例

Bill
63

注释:每次使用类创建新对象时,都会自动调用 init() 函数。

对于刚开始学习Python的小伙伴,我给大家准备了2023年最新的Python全套学习教程、数百本PDF电子书,都打包好了,直接在文章最下方名片领取

对象方法

对象也可以包含方法。对象中的方法是属于该对象的函数。

让我们在 Person 类中创建方法:

实例

插入一个打印问候语的函数,并在 p1 对象上执行它:

class Person:def __init__(self, name, age):self.name = nameself.age = agedef myfunc(self):print("Hello my name is " + self.name)p1 = Person("Bill", 63)
p1.myfunc()

运行实例

Hello my name is Bill

提示:self 参数是对类的当前实例的引用,用于访问属于该类的变量。

self 参数

self 参数是对类的当前实例的引用,用于访问属于该类的变量。

它不必被命名为 self,您可以随意调用它,但它必须是类中任意函数的首个参数:

实例

使用单词 mysillyobject 和 abc 代替 self:

class Person:def __init__(mysillyobject, name, age):mysillyobject.name = namemysillyobject.age = agedef myfunc(abc):print("Hello my name is " + abc.name)p1 = Person("Bill", 63)
p1.myfunc()

运行实例

Hello my name is Bill

修改对象属性

您可以这样修改对象的属性:

实例

把 p1 的年龄设置为 40:

p1.age = 40

运行实例

64

删除对象属性

您可以使用 del 关键字删除对象的属性:

实例

删除 p1 对象的 age 属性:

del p1.age

运行实例

Traceback (most recent call last):File "demo_class7.py", line 13, in <module>print(p1.age)
AttributeError: 'Person' object has no attribute 'age'

删除对象

使用 del 关键字删除对象:

实例

删除 p1 对象:

del p1

运行实例

Traceback (most recent call last):File "demo_class8.py", line 13, in <module>print(p1)
NameError: 'p1' is not defined

pass 语句

类定义不能为空,但是如果您处于某种原因写了无内容的类定义语句,请使用 pass 语句来避免错误。

实例

class Person:pass
http://www.lryc.cn/news/27534.html

相关文章:

  • qml的进度条
  • Pycharm补丁包使用教程
  • 用VAE生成图像
  • 你只会说MVC模型是什么但是不会实现?今天带你走通Web、Servlet、MVC、SpringMVC。代码演示很清晰
  • C++中邻接矩阵、邻接表、链式前向星具体用法及讲解
  • appium的安装详解
  • STM32之 串口
  • CSDN 编程竞赛三十三期题解
  • 逆向练习之 mingyue.exe wp
  • LeetCode 热题 HOT 100 Java 题解 -- Part 3
  • QML键盘事件
  • 跨域问题怎么解决
  • 微服务网关Gateway和Zuul的区别
  • 专访华西二院吴邦华:隐私计算+AI全栈技术,构筑智慧医院建设的坚实数据底座|爱分析访谈
  • 《C++ Primer Plus》第18章:探讨 C++ 新标准(6)
  • .Net Core中使用是SQL Server的邮件发送功能
  • Nginx优化服务和防盗链
  • B树与B+树
  • QEMU网络配置
  • windows安装tomcat
  • 刷题记录:牛客NC23051华华和月月种树 树链剖分+离线加点
  • 年薪20W软件测试工程师必备的6大技能(建议收藏)
  • 【存储】RAID2.0+、多路径技术、磁盘可靠性技术
  • Vue 2
  • Ubuntu 安装 Docker Engine
  • SpringBoot入门 - 添加内存数据库H2
  • 高质量数字化转型创新发展大会暨中国信通院“铸基计划”年度会议成功召开
  • 2023年如何通过软考初级程序员?
  • 视频自动播放的实现与问题解决
  • ThreadLocal 理解及面试