"""
1.实例属性和类属性
一个类可以实例化多个对象出来
那么问题来了:实例对象的属性和类的属性之间有何关系?
如果类的属性改变,实例属性会不会跟着改变?
"""
class ClassA(object):
v1 = '奥特曼'
def fun1(self):
print('v1的值是:' + self.v1)
a = ClassA() # 类的实例化
print(a.v1) # 使用属性
ClassA.v1 = '怪兽' # 改变类属性
print(a.v1) # 打印实例化对象a的属性
"""
从上面的程序中看出,类的属性改变,实例属性也会改变
因为实例对象是根据类复制出来的
那么,如果实例属性改变,类属性会改变吗
答案是不会哦,因为每个实例都是单独的个体,不能影响到类的
"""
class ClassA(object):
v1 = '奥特曼'
def fun1(self):
print('v1的值是:' + self.v1)
a = ClassA() # 类的实例化
print(a.v1) # 使用属性
ClassA.v1 = '怪兽' # 改变类属性
print(a.v1) # 打印修改后
print(ClassA.v1) # 打印类的属性值
# 可以看出,不管实例对象怎么修改属性值,对类的属性还是没有影响的。
"""
2.实例方法与类方法
提出问题:如果类方法改变,实例方法会不会随之改变?
"""
class ClassA(object):
v1 = '奥特曼'
def fun1(self):
print('多敲代码,多思考')
a = ClassA() # 实例化
a.fun1() # 使用方法
# 修改类方法
# 1.首先定义一个新函数
def Fun2():
print('学习无捷径')
# 2.用新函数替代老函数,也就是【重写类方法】
ClassA.fun1 = Fun2()
# 再调用
a.fun1()
"""
总结:仔细看下例子,多琢磨自己尝试。思考为什么要这么做,这么使用
从上面程序中看出,类方法改变,属性方法也会跟着改变
其中,我们需要改变类方法,就用到了类的重写
使用[类.原始函数 = 新函数]完成类的重写
注意,这里赋值是在替换方法,并不是调用,所以不能加括号
[类.原始函数()=新函数()]是不对的
那么,实例方法改变了,类方法会改变吗?
不能重写实例方法,会直接报错,看程序
"""
class ClassA(object):
v1 = '奥特曼'
def fun1(self):
print('多敲代码,多思考')
a = ClassA() # 实例化
a.fun1() # 使用方法
# 修改类方法
# 1.首先定义一个新函数
def Fun2(self):
print('学习无捷径')
# 2.用新函数替代老函数,也就是【重写类方法】
a.fun1 = Fun2()
# 再调用
a.fun1()
# 这样就会报错啦!
Python---类(实例属性和类属性、实例方法和类方法)
最新推荐文章于 2024-07-18 15:53:23 发布