• Python 类的属性和实例属性 Python 的动态语言


    #定义一下类, 含有类属性 aaa,

    >>> class Aa: 
    ... aaa = 10
    ... 

    #对类 Aa实例化出一个实例 a1
    >>> a1 = Aa() 
    >>> print(a1.__dict__)#查看实例并没有自己的方法和属性
    {}
    >>> a1.aaa #但是这个实例在调用属性的时候, 发现自己没有这个属性, 于是去找其类有没有这个属性, 找到了就返回类的属性
    10
    >>> print(a1.__dict__)# 但是实例 a1仍然没有自己的属性, 只是调用类的. 
    {}
    >>> a1.aaa += 2 #一旦用等号对a1.aaa 进行赋值运算, 就等同于a1.aaa = 12.给 a1 setatrr 了一个属性, 
    >>> print(a1.__dict__) #而且名字也是 aaa. 这里就成了实例发生. 优先于类属性
    {'aaa': 12}
    >>> a1.aaa
    12
    >>> a2 = Aa() #再实例化一个对象
    >>> a2.aaa
    10
    >>> print(a2.__dict__) #新对象没有自己的实例属性
    {}
    >>>

    >>> Aa.aaa #类的属性没有发生改变
    10
    >>> Aa.aaa += 5 #现在把类的属性的值在内存中变成15
    >>> Aa.aaa
    15
    >>> a2.aaa #对于没有自己实例属性的 a2来说, 还是只能调用类的属性,新值15
    15
    >>> a1.aaa #而 a1有了自己的实例属性, 就不再随类属性变化了, 虽然属性名相同, 但是指向的对象已经不同
    12
    >>> a3 = Aa() #再来实例化一个 a3, 实例化的时候, aaa = 10这一句已经不再作用于类属性 Aa.aaa,
    >>> a3.aaa #难留内存的类属性的值是15
    15
    >>>

    >>> Aa.aaa  #现在不明白的是, Aa.aaa 已经不是 已经把 aaa 抛弃了? 要不然在实例化的时候, aaa = 10怎么办?
    15
    >>>#看下图解读:

     

  • 相关阅读:
    NFS-网络文件共享服务
    CentOS7.5基础优化与常用配置
    29张截图-全新安装CentOS7.5-超详细!
    VMware跨电脑移动Linux虚拟机
    搭建markdown图床-腾讯云COS
    tcpdump-抓包工具-Linux
    vmware克隆虚拟机
    CentOS6.9安装httpd并正确配置静态IP地址
    区块链核心技术与应用
    docker安装jenkins自动化部署
  • 原文地址:https://www.cnblogs.com/guiyuhua/p/8639467.html
Copyright © 2020-2023  润新知