您的位置:首页 > 编程语言 > Python开发

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

2020-03-28 20:08 881 查看

关于类对象的增:
方法一

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)

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

  • 点赞
  • 收藏
  • 分享
  • 文章举报
DeepThinking-anything 发布了12 篇原创文章 · 获赞 0 · 访问量 109 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: