• 面向对象 -- 类的加载顺序 类和对象的命名空间


    类的加载顺序

    类和类一个缩进内的代码在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)
  • 相关阅读:
    猜拳游戏
    python2.7安装paramiko模板(windows)
    python socket编程(初级)
    Python2.7怎么安装MySQLdb模板(Windows32)
    Python的用户交互模式
    一个java程序员自学IOS开发之路(三)
    一个java程序员自学IOS开发之路(二)
    一个java程序员自学IOS开发之路(一)
    win 7 取得最高权限
    Multiset ------ 多重集合
  • 原文地址:https://www.cnblogs.com/biulo/p/10604263.html
Copyright © 2020-2023  润新知