zoukankan      html  css  js  c++  java
  • 实例属性和类属性的理解

    # class fun():
    #     a = 1       # 类属性
    #     def l(self):
    #         a = 4
    #         print('a')
    # b = fun()
    # print(fun.a)
    
    
    
    # class Test(object):
    #     name = 'scolia'
    #
    # a = Test()
    # Test.name = 'scolia good'   # 通过类进行修改类属性,成功!连实例属性都改了
    # print(Test.name)
    # print(a.name)
    
    
    # class Test(object):
    #     name = 'scolia'
    #
    # a = Test()
    # a.name = 'scolia good'        # 通过实例进行修改,不成功,只是相当于重新创建了实例属性,没有修改类属性
    # print(Test.name)
    # print(a.name)
    
    # 这里的情况是我在实例中访问一个属性,但是我实例中没有,我就试图去创建我的类中寻找有没有这个属性。
    # 找到了,就有,没找到,就抛出异常。(这里说明了实例对象能够访问类的属性!反之,类对象不能访问实例属性!)
    # 而当我试图用实例去修改一个在类中不可变的属性的时候,我实际上并没有修改,而是在我的实例中创建了这个属性。
    # 而当我再次访问这个属性的时候,我实例中有,就不用去类中寻找了。
    
    # class Test(object):
    #     name = 'scolia'
    #
    # a = Test()
    # a.abc = 123
    # print(dir(Test))             # abc 自动在实例属性中创建了
    # print(dir(a))
    
    
    # 已经证实了实例属性能够被类对象修改,试着通过实例修改类属性
    # class Test:
    #     list1 = []
    #
    # a = Test()
    # a.list1.append(123)     # 通过实例修改类中的列表
    # print(Test.list1)
    # print(a.list1)
    
    
    # 也可以任性地为某个实例添加方法,python 支持动态添加属性
    # class Test:
    #     pass
    #
    # def fangfa():
    #     print('我是某个实例的方法')
    #
    # a = Test()
    # b = Test()
    # a.abc = fangfa  # 特意添加一个方法
    # a.abc()
    # b.abc()     # b 没有这个方法
    
    # 还能为类动态添加方法
    class Test:
        pass
    
    def fangfa(self):   # self 代表是实例方法,只能由实例调用
        print('我是方法')
    
    Test.abc = fangfa
    a = Test()
    a.abc()
    b = Test()              # 已经修改(新增)了类的方法
    b.abc()
    

      

                                                                       -------  知识无价,汗水有情,如需搬运请注明出处,谢谢!

  • 相关阅读:
    【MyLocations】标记位置App开发体会
    iOS开发-Core Location和Map Kit
    iOS开发-轻点、触摸和手势
    iOS开发-GCD和后台处理
    iOS开发-block使用与多线程
    iOS开发-数据持久化
    iOS开发-为程序添加应用设置
    对iOS中MVC的理解
    docker
    linux shell
  • 原文地址:https://www.cnblogs.com/wf-skylark/p/9009355.html
Copyright © 2011-2022 走看看