zoukankan      html  css  js  c++  java
  • 面向对象 -- 类的加载顺序 类和对象的命名空间

    类的加载顺序

    类和类一个缩进内的代码在py文件从上到下解释的时候就已经被执行了

    类中的代码永远是从上到下依次执行的

    练习 :写一个类,能够自动的统计这个类有多少个对象
    class A:
        Count = 0
        def __init__(self,name):
            self.name = name
            A.Count += 1
    
    a = A('alex')   # 创建了一个新对象
    a2 = A('alex2')
    print(A.Count)

    类和对象的命名空间


    类和对象是存储在两块命名空间里

    变量 = 一个类的内存地址

    对象去找在类的空间中的名字的前提 : 自己的空间里没有这个名字

    class Student:
        country = 'China'
        def __init__(self,name):
            self.name = name
    
    zhang = Student('张尧')
    zou = Student('邹路')
    print(zhang.country)
    Student.country = '法国人'
    print(zhang.country)
    zhang.country = '日本人'   # 给一个对象添加了一个属性
    print(zou.country)
    print(zhang.country)

    在操作静态变量的时候应尽量使用类名来操作 而不是使用对象名来操作

    只要是对一个对象的名字直接赋值,那么就是在这个对象的空间内创建了新的属性

    只要是对一个可变的数据类型内部的变化,那么仍然是所有的对象和类共享这个改变的结果

    所有的静态变量都是用类名来操作,这样修改就能被所有的对象感知到

    如果是对于可变数据类型的静态变量,操作的是这个数据内部的内容,也可以使用对象来调用

    class B:
        l = [0]
        def __init__(self,name):
            self.name = name
    
    b1 = B('颜海清')
    b2 = B('孙晶晶')
    print(B.l)
    print(b1.l)
    print(b2.l)
    b1.l[0] += 1
    print(b2.l[0])
    b1.l = [123]
    print(b2.l)
  • 相关阅读:
    jython运行python文件
    jython查看帮助help和模块modules
    ubuntu 星际译王3.0.1-9.4隐藏主界面不能打开
    ubuntu火狐(firfox)浏览器安装视频插件
    ubuntu安装mp4播放器vlc & smplayer
    ubuntu+Windows双系统默认引导顺序
    notepad++ 各种颜色调整
    Linux绿色版软件expect
    aix下shell读取脚本文件并逐行执行
    AIX系统常用命令
  • 原文地址:https://www.cnblogs.com/biulo/p/10604263.html
Copyright © 2011-2022 走看看