0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python面向对象深化(上)

麦辣鸡腿堡 来源:python都知道 作者:了不起 2023-05-11 17:51 次阅读

前言

哈喽, 大家好, 我是了不起!

欢迎大家来观看了不起的冒险之旅. 为了方便起见, 文中以小知为名. 讲述了不起在Python异世界的冒险之旅.

天空之城是座高耸云端的城堡. 位于西海岸附近, 在城堡的最顶端可以眺望到天空之海. 直到格兰之森那场大火的发生,使得围绕在它周围的魔法阵力量减弱,人们才终于重新看到天空之城的真实模样. 当时,关于天界的传闻甚至比天上的繁星还多,但是却没有一个人能够证明它真实存在。


实例对象和类对象创建过程内存分析

我们以下面代码为例,分析整个创建过程:

classStudent:

company="sxd"#类属性

count=0#类属性

def__init__(self,name,score):

self.name=name#实例属性

self.score=score

Student.count=Student.count+1

defsay_score(self):#实例方法

print("我的公司是:",Student.company)

print(self.name,"的分数是:",self.score)

s1=Student("时间静止",18)#s1是实例对象,自动调用__init__()方法

s2=Student("不是简史",81)

s1.say_score()

print('一共创建{0}个Student对象'.format(Student.count))

print("s1的引用:",id(s1))

print("s2的引用:",id(s2))

print("Student的引用:",id(Student))

pYYBAGRcuk6AAcKEAAFo1aKJyGU270.png

默认的类方法

init构造方法和__new__ 方法

初始化对象, 我们需要定义构造函数__init__()方法 构造方法用于执行“实例对象的初始化工作”, 即对象创建后, 初始化当前对象的相关属性, 无返回值 如果将对象比作一座房子, 则构造方法(__init__)是负责初始化(装修) , 不是建对象(房子)

__init__()的要点如下(约等于Java的构造方法):

  1. 名称固定, 必须为: __init__()
  2. 第一个参数固定, 必须为: self.self指的就是刚刚创建好的实例对象
  3. 构造函数通常用来初始化实例对象的实例属性 通过“类名(参数列表)”来调用构造函数. 调用后, 将创建好的对象返回给相应的变量. 比如: s1 = Student("时间静止", 80)
  4. __init__()方法: 初始化创建好的对象,初始化指的是: "给实例属性赋值"
  5. 如果我们不定义__init__方法, 系统会提供一个默认的__init__方法. 如果我们定义了带参的__init__方法, 系统不创建默认的__init__方法
  6. __new__()方法: 用于创建对象, 但我们一般无需重定义该方法

注意:

  • Python中的 self 相当于C++中的 self指针 , JAVA和C#中的 this 关键字
  • Python中, self 必须为构造函数的第一个参数, 名字可以任意修改, 但一般都叫做 self.他的作用是指向当前对象的本身/当前对象的引用

__del__方法(析构函数)和垃圾回收机制

__del__()称为“析构方法”, 用于实现对象被销毁时所需的操作. 比如: 释放对象占用的资源, 例如: 打开的文件资源、网络连接等

注意:

  1. Python实现自动的垃圾回收, 当对象没有被引用时(引用计数为0), 由垃圾回收器调用__del__()
  2. 我们也可以通过 del语句 删除对象, 从而保证调用__del__()
  3. 系统会自动提供__del__方法 , 一般不需要自定义析构方法.

实操代码

classPerson:

def__del__(self):

print("销毁对象:{0}".format(self))

p1=Person()

p2=Person()

delp2

print("程序结束")

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4779

    浏览量

    68524
  • python
    +关注

    关注

    56

    文章

    4792

    浏览量

    84627
收藏 人收藏

    评论

    相关推荐

    Python面向对象编程详解

    一般编程可分为面向过程编程,和面向对象编程。Python面向对象编程,与Java的
    发表于 09-04 16:35 559次阅读
    <b class='flag-5'>Python</b>的<b class='flag-5'>面向</b><b class='flag-5'>对象</b>编程详解

    labview面向对象编程

    点击学习>>《龙哥手把手教你学LabVIEW视觉设计》视频教程使用LabVIEW面向对象编程方法,对于大型测试应用程序来讲,面向对象相对于面向
    发表于 11-24 11:01

    3分钟看懂Python面向对象

    可以的,Python并不做硬性的限制。Python面向对象特征如下:封装面向对象程序设计中的术
    发表于 06-08 14:20

    LabVIEW面向对象的ActorFramework(1)

    ` 本帖最后由 bollworm 于 2020-2-10 14:54 编辑 本系列文章主要阐述以下几个问题:(1)什么是面向对象编程?(2)为什么要学习面向编程?(3)LabVIEW面向
    发表于 02-10 14:09

    面向对象编程及其三大特性 精选资料分享

    编程语言分为面向过程编程、函数式编程和面向对象编程。其实python就是一种面向对象编程,那么我
    发表于 07-21 08:38

    谈谈面向对象编程

    在工业自动化领域,梯形图逻辑仍然是最常用的编程语言之一,但对于更加复杂的控制对象面向对象编程不失为一种高效率的方式。下面先来谈谈面向对象
    发表于 09-08 07:47

    面向对象编程总结

    如何从面向过程到面向对象OOP?面向对象是什么?有何特点?
    发表于 09-29 08:19

    面向对象编程介绍

    目录一、面向对象编程介绍1.面向过程编程2.函数式编程3.面向对象编程二.面向
    发表于 12-13 07:22

    网络讲坛:面向对象的编程()-labview视频教程

    网络讲坛:面向对象的编程()-labview视频教程
    发表于 03-26 16:41 252次下载

    这可能是Python面向对象编程的最佳实践

    本节介绍了attrs和cattrs两个库,让实现Python面向对象编程不再难。
    的头像 发表于 06-22 12:07 2679次阅读

    利用Python和PyTorch处理面向对象的数据集

    本篇是利用 Python 和 PyTorch 处理面向对象的数据集系列博客的第 2 篇。 如需阅读第 1 篇:原始数据和数据集,请参阅此处。 我们在第 1 部分中已定义 MyDataset 类,现在
    的头像 发表于 08-25 15:30 2980次阅读

    利用 Python 和 PyTorch 处理面向对象的数据集(2)) :创建数据集对象

    本篇是利用 Python 和 PyTorch 处理面向对象的数据集系列博客的第 2 篇。我们在第 1 部分中已定义 MyDataset 类,现在,让我们来例化 MyDataset 对象
    的头像 发表于 08-02 17:35 925次阅读
    利用 <b class='flag-5'>Python</b> 和 PyTorch 处理<b class='flag-5'>面向</b><b class='flag-5'>对象</b>的数据集(2)) :创建数据集<b class='flag-5'>对象</b>

    面向过程与面向对象的区别

    说起面向对象,大家可能会想到其他的,但是此对象非彼对象哈哈,不必惊慌,也特别好搞定。 在听到面向
    的头像 发表于 02-15 11:10 4171次阅读
    <b class='flag-5'>面向</b>过程与<b class='flag-5'>面向</b><b class='flag-5'>对象</b>的区别

    Python中的类和对象详解

    Python 是一种面向对象的编程语言,它支持类和对象。类是一种用户自定义的数据类型,用于定义对象的属性和方法。
    的头像 发表于 04-20 16:53 1127次阅读

    Python面向对象深化(下)

    __call__  方法和可调用对象 凡是可以将 () 直接应用到自身并执行, 都称为可调用对象. 注意: 可调用对象包括自定义的函数、Python 内置函数、以及本节所讲的实例
    的头像 发表于 05-11 17:52 653次阅读