zoukankan      html  css  js  c++  java
  • day17 名称空间、查询顺序

    一、类名称空间与对象的名称空间

    创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性

    而类有两种属性:静态属性和动态属性

    • 静态属性就是直接在类中定义的变量
    • 动态属性就是定义在类中的方法

          其中类的数据属性是共享给所有对象的

    >>>id(egg.role)
    4341594072
    >>>id(Person.role)
    4341594072

        而类的动态属性是绑定到所有对象的

    >>>egg.attack
    <bound method Person.attack of <__main__.Person object at 0x101285860>>
    >>>Person.attack
    <function Person.attack at 0x10127abf8> 

    创建一个对象/实例就会创建一个对象/实例的名称空间,存放对象/实例的名字,称为对象/实例的属性

      在obj.name会先从obj自己的名称空间里找name,找不到则去类中找,类也找不到就找父类...最后都找不到就抛出异常

       

    对象与对象之间是互相独立的.

    class Count:
        count = 0
        def __init__(self):
            Count.count = self.count + 1
    
    obj1 = Count()
    obj2 = Count()
    
    print(Count.count)
    count = 0
    
    def func():
        print(count)
    func()
    
    class Count:
        count = 0
        def __init__(self):
            pass
    View Code


    通过类名可以更改我的类中的静态变量值

    Count.count = 6
    print(Count.__dict__)

    但是通过对象 不能改变只能引用类中的静态变量

    obj1 = Count()
    print(obj1.count)
    obj1.count = 6

           

  • 相关阅读:
    mysql索引数据结构
    29. 使用参数化编写自动化测试用例
    28. Python编写自动化测试用例
    27. Unittest单元测试框架的介绍与使用
    26. 什么是单元测试
    25. Postman的使用
    24. 接口测试的意义
    23. requests安装与使用
    22. 如何编写接口文档
    21. Blog接口开发
  • 原文地址:https://www.cnblogs.com/zhuangdd/p/12466382.html
Copyright © 2011-2022 走看看