Day3 Python面向对象编程笔记3(类属性的增查改删)

关于类对象的增:
方法一

class Money:'''这里的Money有两个作用,1.建立了一个叫Money的类
                                     2。在内存中存储一个叫Money的变量并与Money向关联'''
  pass
 Money.num=666#类对象实际上也是一个对象,可以按照对象属性增添方法来增添
 print(Money.num)#或者print(Money.__dict__)

方法二(常用):

class Money:
  age=18
  count=666 #直接在class后面添加类属性
print(Money.age)
print(Money.count)
print(Money.__dict__)

关于类对象的查:
先了解Python语言的查找机制:
对于一个对象来说,如果他自身具有这个属性则查到自己的该属性就结束;如果没有,则通过__class__返回类里去查找属性。

class Money:
  age=18
  count=1
  number=666
one=Money() #让one.__class__=Money
print(one.age)
print(one.number)
print(one.count)
class Money:
 age=18
 weight=120
 hight=180
one=Money()
one.age=19
print(one.age)  #这样的话就会打印出19而不是18

如果出现这种情况,说明内存中one的__class__被修改为指向Test,无法访问到Money的属性

class Test:
  age=100
class Money:
  age=10
  weight=120
one=Money()
one.__class__=Test
print(one.age)#打印出100
print(one.weight) #不会打印出任何东西,报错

关于类对象的改:
切记万万不可通过对象去改,正确做法如下:

class Money:
  age=18
Money.age=19
print(Money.age)#打印出19

如果出现以下情况:

class Money:
  age=18
one=Money()
print(Money.age) #打印出18
one.age=19 #实际是为对象创建了一个age的属性并且赋值为19,只有通过访问时,才会通过__class__来访问类属性
print(Money.age) #仍然打印出18,表面这种修改不成功

关于类属性的删:
类属性的删也不能通过对象来删除(del 只能删除直系的东西,不能删别人的)

class Money:
  age=18
  count=100
del Money.age
print(Money.age)#报错原因:Money中没有age元素

如果是如下情况:

class Money:
  age=18
  count=100
one=Money()
del one.age  #报错原因:one中没有age元素
print(Money.age)

总结:对于类对象的增查改删,只有查可以通过对象来进行访问,其他的只能用类对象本身来进行操作。类的属性被各个该类创建的对象所共享!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值