Python_类对象、实例对象、类属性、实例属性、类方法、实例方法

news2025/1/12 20:52:11

目录

认识类对象、实例对象、类属性、实例属性、类方法、实例方法

类对象实例化过程中的内存分配说明


认识类对象、实例对象、类属性、实例属性、类方法、实例方法

  • 类对象:定义的类就是类对象
  • 实例对象:类对象实例化后就是实例对象
  • 类属性:定义在 __init__ 外部的变量
  • 实例属性:定义在__init__内部的带有self.的变量
  • 类方法:定义在类对象中 且 被@classmethod 装饰的方法就是类方法
  • 实例方法:定义在类对象中,且 未被@classmethod 装饰的方法就是实例方法
class Foo:
    # 【类属性】定义在 __init__ 外部的变量
    cls_attr = "我是类属性"

    def __init__(self):
        # 【实例属性】定义在__init__内部的带有self.的变量。没有self.是局部变量
        self.self_attr = "我是实例属性"

    @classmethod
    def cls_func(cls):
        print("我是类方法")
        print("在类方法内部调用类属性", cls.cls_attr)

    def self_func(self):
        print("我是实例方法")
        print("在实例方法内部调用类属性", self.cls_attr)
        print("在实例方法内部调用实例属性", self.self_attr)


if __name__ == '__main__':
    # 类对象:定义的类就是类对象
    print("类对象", Foo)

    # 实例对象:类对象实例化后就是实例对象
    self_obj = Foo()
    print("实例对象", self_obj)
    print("-" * 30)

    # 类属性:定义在 __init__ 外部的变量
    # 类属性可以被类对象调用,也可以被实例对象调用,调用方式是【对象.类属性】调用
    print("类对象调用类属性", Foo.cls_attr)
    print("实例对象调用类属性", self_obj.cls_attr)
    print("-" * 30)

    # 实例属性:定义在__init__内部的带有self.的变量
    # 实例属性只能实例对象调用
    print("实例对象调用实例属性", self_obj.self_attr)
    print("-" * 30)

    # 类方法:定义在类对象中 且 被@classmethod 装饰的方法就是类方法
    # 类方法可以被类对象调用,也可以被实例对象调用,调用方式是【对象.类属性】调用
    print("类对象调用类方法", Foo.cls_func())
    print("实例对象调用类方法", self_obj.cls_func())
    print("-" * 30)

    # 实例方法:定义在类对象中,且 未被@classmethod 装饰的方法就是实例方法
    # 实例方法只能被实例对象调用
    print("实例对象调用类方法", self_obj.self_func())

类对象实例化过程中的内存分配说明

当执行python脚本时,Python解析到类对象时,会给类对象在内存中分配一块区域,在这处内存中存储类对象的所有属性和方法。

当创建实例时,每创建一个实例就会将实例属性和方法全部复制一份,并存储到一块新的内存区域。

类属性和类方法不会被复制,但是我们可以通过实例对象调用它们,这是因为每个创建的实例对象都会添加__class__属性,该属性指向类对象,因此能够通过实例对象调用类属性和类方法。

 验证代码

综上所述,从类的维度可以简单理解为

类属性和类方法是共用的(或全局的),不管任何类对象或实例对象修改了类属性或方法中的变量值,所有调用的地方都会受影响。

实例属性和实例方法是私有的(或局部的),某个实例对象修改了实例属性或方法的变量值,只会影响其本身,不会影响其它实例对象。


-事必有法,然后有成- 最后祝大家早日达到测试的天花板!



 以下是我收集到的比较好的学习教程资源,虽然不是什么很值钱的东西,如果你刚好需要,可以评论区,留言【777】直接拿走就好了

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

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

相关文章

HarmonyOS/OpenHarmony应用开发-Stage模型应用程序包结构

基于Stage模型开发的应用,经编译打包后,其应用程序包结构如下图应用程序包结构(Stage模型)所示。开发者需要熟悉应用程序包结构相关的基本概念。 在开发态,一个应用包含一个或者多个Module,可以在DevEco S…

web自动化测试思路及实战:PO设计模式介绍

Page Objects 设计模式 Page Objects概念: Page Objects是指UI界面上用于与用户进行交互的对象 pageobjects 设计模式概念: pageobjects 模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面…

vue3 拖拽实现,最简单的demo

入门教程&#xff0c;后续有时间会慢慢更新&#xff0c;下面是一个简单demo实现拖拽功能 <template><div><div ref"targetDom" id"div" dragenter"dragenter">我是可放置目标</div><p id"drag" draggable…

声明式事务

1.回顾事务 把一组业务当成一个业务来做&#xff1a;要么都成功&#xff0c;要么都失败&#xff01;事务在项目开发中&#xff0c;十分的重要&#xff0c;涉及到数据的一致性问题&#xff0c;不能马虎&#xff01;确保完整性和一致性&#xff1b; 事务ACID原则 原子性一致性…

基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定

系列文章目录 基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建 基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理 基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理 基于PyQt5的桌面图像调试仿真平台开发(5)…

value-initialization of reference type ‘nlohmann::basic_json<>’的错误

使用json出现这个错误&#xff0c;是因为gcc的版本问题&#xff0c;我的是4.8版本 解决办法就是更改gcc版本&#xff0c;我更改的版本是9.3 参考更改版本(3条消息) 【Linux基础】CentOS 7环境下安装高版本GCC (gcc/g 9.3)_centos7gcc版本_宁海没有七号公园的博客-CSDN博客

leetcode验证回文字符串

链接: 验证回文字符串 class Solution { public:bool isLetterOrNumber(char ch){return (ch>a && ch<z)|| (ch> 0 && ch < 9);}bool isPalindrome(string s) {//大写字母转换成小写for(auto& ch : s){if(ch> A && ch < Z){ch…

POI导出Excle工具类(反射读取Java类)

文章目录 简介操作Excel相关组件使用工具类 简介 POI是Apache软件基金会用Java编写的免费开源的跨平台的 Java API&#xff0c;Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 所以POI的主要功能是可以用Java操作Microsoft Office的相关文件&#xff0…

【uniapp开发小程序】点击获取手机号(使用@getphonenumber)

一、实现效果 二、代码实现&#xff1a; <template><view><view class"shopadd" v-if"info.mobile">{{info.mobile}}</view><button class"getNumber" v-else open-type"getPhoneNumber" getphonenumber…

linux php 内置服务器测试 phpinfo

环境&#xff1a;linux 操作系统&#xff0c;有图形化界面&#xff0c;有浏览器 php -S localhost:8000直接使用 -S 命令选项&#xff0c;然后指定地址及端口号&#xff0c;我们就可以运行起来一个 PHP 内置的简易WEB服务器。默认情况下&#xff0c;这个地址会找当前目录下的 …

干货|三个维度详解 Taier 本地调试原理和实践

在平时和开发者们交流的过程中&#xff0c;发现许多开发朋友尤其是新入门 Taier 的开发者&#xff0c;对于本地调试都有着诸多的不理解和问题。本文就大家平时问的最多的三个问题&#xff0c;服务编译&#xff0c;配置&本地运行&#xff0c;如何在 Taier 运行 Flink-standa…

46 # 可读流 readStream

上一节实现了文件拷贝功能&#xff0c;其中的读和写的操作都耦合在一起了&#xff0c;能不能实现一个方法&#xff0c;可以用一行搞定&#xff0c;这里涉及到流里的 pipe 流 流是有方向的&#xff0c;先读出来再写&#xff0c;node 中实现了流的模块&#xff08;stream&#…

记一次使用MySQL数据库ORM为 SqlSugar 事务无效的处理过程

在项目中使用了开源代码框架admin.net &#xff0c;其使用的数据库ORM为SqlSugar 使用以下代码执行事务理论上应该有回滚发生&#xff0c;但数据任然删除了 [UnitOfWork][ApiDescriptionSettings(Name "Delete")] [HttpPost][DisplayName("删除菜单")]p…

linux上搭建nfs服务

NFS&#xff08;Network File System&#xff09;&#xff1a;它最大的功能就是可以通过网络&#xff0c;让不同的机器、不同的操作系统可以共享彼此的文件。 NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中&#xff0c;而在本地端的系统中来看&…

测试背了4年“锅“,测试缺陷总结整理(细致)“锅“终丢掉了...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 缺陷分析也是测试…

青岛大学_王卓老师【数据结构与算法】Week03_04_线性表的链式表示和实现4_学习笔记

本文是个人笔记&#xff0c;仅用于学习分享&#xff0c;素材来自青岛大学王卓老师的教学视频&#xff0c;如有侵权&#xff0c;请留言作删文处理。 视频链接&#xff1a; 数据结构与算法基础–第3周04–2.5线性表的链式表示和实现4–单链表基本操作2–销毁单链表 &#x1f4…

Echarts X轴文本显示不全 axisLabel设置旋转角度进行展示

option {xAxis: {......axisLabel: {rotate: 45},......},...... };效果&#xff1a;

伦敦金实时行情走势图的魅力

一直以来&#xff0c;伦敦金都因其自由的交易时间和不设涨跌幅限制而充满魅力&#xff0c;它每天的实时行情走势图是全球投资者关注的焦点&#xff0c;任何投资者都可以结合技术和基本面分析手段&#xff0c;来预测未来金价走势&#xff0c;从而在这个市场上实现收益。 虽然在一…

玩游戏感觉很不流畅,无法进入游戏的解决方法

别说3A大作了&#xff0c;有时候觉得玩个小单机游戏感觉很不流畅&#xff0c;甚至进不去游戏&#xff0c;出现这种情况大家就得多关注下自己电脑故障问题了&#xff0c;驱动人生帮大家解决玩游戏不流畅&#xff0c;无法进入游戏的故障问题。 出现玩游戏感觉很不流畅&#xff0…

【C++】C++入门(二)

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 1.缺省参数(默认参数) 2.函数重载 a.函数重载的概念 问题&#xff1a; 为什么C语言无法重载&#xff0c;而C plus plus 可以重载&#xff1f; C plus plus是如何做到函数重载的&a…