首页 > 编程语言 >python编程(类变量和实例变量)

python编程(类变量和实例变量)

时间:2022-11-23 13:00:37浏览次数:42  
标签:__ .__ 变量 python 编程 dataprint 实例 dict


    关于类变量和实例变量,一直不是很清楚。所以,想做几个实验,彻底解决这个问题。为此,我们设计了三个实验。

1、直接引用类变量

import os
import sys

class A():
data = 10

a = A()
b = A()
print a.data
print b.data
print a.__dict__
print b.__dict__

    通过实验结果,我们发现a和b中关于data的数据都是10,但是此时a和b的__dict__都没有数据。

2、修改实例变量

a.data = 11
print a.data
print b.data
print a.__dict__
print b.__dict__

    接着1的实验,我们继续往下看。为此,先修改a.data =11,查看代码的执行情况。通过实验,我们发现,此时a的数据发生了改变,且打印为11,__dict__也发生了改变。但是b什么也没变。

3、修改类变量

A.data = 12
print a.data
print b.data
print a.__dict__
print b.__dict__

    在实验3中,代码直接修改了类的变量。此时通过打印,我们看到a的数据仍然为11,但是b的数据已经打印为12。关于__dict__,则a存在data数据,b照样什么也没有。

4、结论

    通过实验,我们可以得出这么一些结论,即实例创建的时候,引用的变量直接指向类变量。如果此时实例变量没有做出修改,那么类变量修改为什么数据,实例变量就会打印什么数据。然而,一旦 实例变量数据发生了改变,它就会在自己的内存空间重新给这个变量分配一段空间,这个时候,类变量的修改就和实例变量没有什么关系了。


标签:__,.__,变量,python,编程,dataprint,实例,dict
From: https://blog.51cto.com/feixiaoxing/5881021

相关文章

  • python编程(python和c相互调用)
      通常为了扩展python的功能,我们需要将c库移植到python上面。python和c调用一般分成两种情况,一种是python调用c,这种情况最为普遍,也比较简单。另外一种就是c调用python,这......
  • 21.1 动态TLS--《Windows核心编程》
    应用程序通过调用一组4个函数来使用动态TLS,这些函数实际上最经常为DLL所使用。通常情况下,如果DLL使用TLS,那么当它用DLL_PROCESS_ATTACH标志调用它的DllMain函数时......
  • 21.2 静态TLS--《Windows核心编程》
    部分笔记来自于:https://blog.csdn.net/Steven_programe_life/article/details/103358251?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baiduland......
  • socket通信编程C++实现
    socket提供了套接字,以方便我们想读取文件一样进行网络进程间的数据通信。在网络通信中,套接字一定是成对出现的。一端的发送缓冲区对应对端的接收缓冲区。我们使用同一个文......
  • 20.3 DLL入口函数--《Windows核心编程》
    如果在执行一些与进程或者线程有关的初始化或者销毁工作的时候,需要DllMain。如果只需要创建一个包含资源的DLL,不需要这个函数。B00LWINAPIDllMain(HINSTANCEhinstDll,......
  • 20.4 延迟加载DLL--《Windows核心编程》
    延迟加载的DLL是个隐含链接的DLL,它实际上要等到你的代码试图引用DLL中包含的一个符号时才进行加载。DLL延迟加载技术的原理,就是从导入表中去掉某dll这一项,等到正式调......
  • 20.5 函数转发器/已知的DLL/DLL重定向/模块的基地址重定位--《Windows核心编程》
    一、函数转发器函数转发器是DLL的输出节(导出段)中的一个项目,用于将对一个函数的调用转至另一个DLL中的另一个函数。可以在DLL中使用函数转发器:#pragmacomment(link......
  • 西门子1200,1500,300,400PLC编程软件,西门子博途博图TIA 13 V14 V15 V16 V17安装包。
     西门子博途博图TIA13V14V15V16V17安装包,西门子1200,1500,300,400PLC编程软件,永久使用。 下载安装包......
  • 随想录(写给自己的C++编程规范)
       对于我这样一个C语言的程序员来说,编写C++的机会其实不太多。但是我还是比较喜欢写C++语言,原因主要有几个方面:(1)自己学C++语言的时间比较长了,也比较了解,如果从大一的时......
  • 18. 默认堆/创建堆--《Windows核心编程》
    Windows提供了以下三种机制来对内存进行操控虚拟内存:最适合用来管理大量对象数组或者大型数据结构内存映射文件:最适合用来管理大型数据流(通常是文件),以及在同一机器上运......