python中对象的属性支持增删改查
属性的增删改查
class Person:
def __init__(self, name='', age=0, sex='女'):
self.name = name
self.age = age
self.sex = sex
class Dog:
# __slots__魔法
# 约束当前类的对象最多能拥有那个属性
__slots__ = ('name', 'color', 'age', 'sex')
def __init__(self, name='', color='黑色'):
self.name = name
self.color = color
self.age = 10
def main():
dog1 = Dog('大黄', '黄色')
# dog1.age = 2
dog1.name = 'ss'
del dog1.color
dog1.sex = '母'
print(dog1.sex)
dog2 = Dog()
# print(dog2.sex) # AttributeError: sex
print('==============属性的增删改查===============')
p1 = Person('小花')
p2 = Person('小红')
1.查(获取对象属性)
对象.属性 - 获取指定对象指定属性值;当属性不存在的时候会报错
getattr(对象, 属性名:str, 默认值) - 获取指定对象指定属性值;
当属性不存在的时候如果给默认值赋了值,程序不会报错,并且将默认值作为结果
==============查===================
print(p1.name)
# print(p1.name1) # AttributeError:'Person' object has no attribute 'name1'
# 属性不确定的时候可以使用getattr
# attr = input('属性:')
# print(getattr(p1, attr))
print(getattr(p1, 'name', None))
print(getattr(p1, 'name1', None))
增/改
对象.属性 = 值 - 当属性存在的是修改属性的值;属性不存在的时候添加属性
setattr(对象, 属性名, 值) - 当属性存在的是修改属性的值;属性不存在的时候添加属性
==============增/改===================
# 修改属性
p1.name = 'xiaohua'
print(p1.name)
# 添加属性
p1.height = 180
print(p1.height)
# 修改属性
setattr(p1, 'age', 18)
print(p1.age)
# 添加属性
setattr(p1, 'weight', 200)
print(p1.weight)
删
del 对象.属性
delattr(对象, 属性名)
print('==============删=================')
del p1.sex
# print(p1.sex) # AttributeError: 'Person' object has no attribute 'sex'
delattr(p1, 'age')
# print(p1.age) # AttributeError: 'Person' object has no attribute 'age'
# 注意:对象属性的操作,只针对操作的那一个对象,不会影响其他对象
print(p1.height)
# print(p2.height) # AttributeError: 'Person' object has no attribute 'height'
print(p2.age)
网友评论