实例属性和类属性的理解

简介: # class fun():# a = 1 # 类属性# def l(self):# a = 4# print('a')# b = fun()# print(fun.
# 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()

  

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

目录
相关文章
|
11天前
|
搜索推荐
如何在构造函数中为类的实例添加方法?
在实际开发中,要根据具体的场景和需求来选择合适的方式来为类的实例添加方法,以确保代码的可读性、可维护性和性能。
|
6月前
|
XML JavaScript 前端开发
nodeType 属性
XML DOM中的每个节点都是对象,具有方法和属性,可通过JavaScript处理。关键属性包括:nodeName、nodeValue和nodeType。nodeType是只读的,用于标识节点类型,如:元素(1)、属性(2)、文本(3)、注释(8)和文档(9)。
|
开发者 Python
类属性和对象属性|学习笔记
快速学习类属性和对象属性
类属性和对象属性|学习笔记
|
前端开发 开发者
class-为子类挂载独有的实例属性和实例方法|学习笔记
快速学习 class-为子类挂载独有的实例属性和实例方法
class-为子类挂载独有的实例属性和实例方法
class-为子类挂载独有的实例属性和实例方法
|
JSON JavaScript 前端开发
18、属性描述对象
JavaScript 提供了一个内部数据结构,用来描述对象的属性,控制它的行为,比如该属性是否可写、可遍历等等。这个内部数据结构称为“属性描述对象”(attributes object)。
180 0
|
Python
类的属性总结
[root@blackfox zhouyuyao]# cat c7.py  #!/usr/bin/python #coding:utf8 var5 = "全局变量var5" class MyClass(object):     var1 = '类的公有属性 var1'   ...
774 0
|
JavaScript
构造函数与原型对象和实例对象的关系
构造函数与原型对象和实例对象的关系 //通过构造函数实例对象,并初始化 //var arr=new Array(10,20,30,40); //join是方法,实例对象调用的方法 //arr.join("|"); //console.
880 0