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)
  • 相关阅读:
    mysql增量同步到greenplum
    c笔记06--编译与作用域
    C笔记05-选择顺序结构,关系与相等,优先级和结合性
    C笔记02-C数据类型与数据类型转换
    C笔记01-C简介与补码
    jQuery属性操作之.val()函数
    jQuery属性操作之.attr()
    jQuery笔记: 基本概念与jQuery核心
    笔记: js构造函数与原型
    布尔运算符
  • 原文地址:https://www.cnblogs.com/biulo/p/10604263.html
Copyright © 2011-2022 走看看