美文网首页
对象属性的增删改查

对象属性的增删改查

作者: 匿隱 | 来源:发表于2019-02-11 14:28 被阅读0次

    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)
    

    相关文章

      网友评论

          本文标题:对象属性的增删改查

          本文链接:https://www.haomeiwen.com/subject/pikzdqtx.html