Python---类(实例属性和类属性、实例方法和类方法)

"""    
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()

# 这样就会报错啦!

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值