博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实例属性和类属性的理解
阅读量:6153 次
发布时间:2019-06-21

本文共 1292 字,大约阅读时间需要 4 分钟。

# 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:    passdef fangfa(self):   # self 代表是实例方法,只能由实例调用    print('我是方法')Test.abc = fangfaa = Test()a.abc()b = Test()              # 已经修改(新增)了类的方法b.abc()

  

转载于:https://www.cnblogs.com/wf-skylark/p/9009355.html

你可能感兴趣的文章
SEOer 的生涯正式开始
查看>>
CodeForces 348D Turtles(LGV定理)题解
查看>>
返流性食管炎的治疗
查看>>
argumrnts
查看>>
java常用的7大排序算法汇总
查看>>
动归熟手题单
查看>>
压缩算法
查看>>
Http协议详解版本一
查看>>
vuex
查看>>
完整学习git四git对象
查看>>
Bzoj1101: [POI2007]Zap 莫比乌斯反演+整除分块
查看>>
innerHTML outerHTML innerText value 区别
查看>>
ALV打印不显示打印界面的问题
查看>>
octopress github 换电脑 使用
查看>>
angular2 学习笔记 ( animation 动画 )
查看>>
1、 Shiro框架:认证,授权(验权 2. Shiro框架实现权限控制方式:
查看>>
cookie 的使用:打开集团站自动跳转到当前城市所对应的网站,通过改变城市跳转到当前城市所对应的网站...
查看>>
Angular-ui-router入门
查看>>
ngx.re.match
查看>>
跨浏览器的事件对象
查看>>