例如:创建人类
class Person(): def __init__(self,name,age): self.name = name self.age = age
a. 使用对象的属性
p1 = Person('XiaoMing', 20) print(p1.name) #>>>XiaoMing
b. 修改对象的属性
p1.name = 'HanBo' print(p1.name) #>>>HanBo
c. 添加对象的属性
p1.face = 100 #如果对象属性不存在,给对象属性赋值,就是给对象添加属性 print(p1.face) #>>>100
d. 删除对象的属性
del p1.age # print(p1.age) #删除也是只删除当前这个对象的属性,不会影响类和其他的对象 p2 = Person('ZhangSan',28) print(p2.age) #>>>28 这里的age在对象p1中被删除,而在p2中依然存在,说明删除不会影响类和其他的对象 # 注意:给对象添加属性是添加到对象中的,而不是类中 # print(p2.face) #>>>报错 face属性值添加到p1中,而p2去调用就会报错,因为不是添加到类中
2.通过attr方法对属性进行增、删、改、查
例如:创建狗类
class Dog(): def __init__(self, name, color): self.name = name self.color = color def shout(self): print('%s一见到小偷就汪汪汪的叫~' % self.name) dog1 = Dog('caicai', 'yellow')
a. 获取对象的属性: getattr
print(getattr(dog1,'name')) #>>>caicai print(dog1.name) #>>>caicai
b. 给某个对象的某个属性赋值: setattr
setattr(dog1, 'name', 'wangcai') #如果属性有就给改变属性的值 setattr(dog1, 'age', 3) #如果属性没有,就给对象添加属性并赋值 print(dog1.name) #>>>wangcai print(dog1.age) #>>>3
c. 判断某个对象是否有某个属性: hasattr
print(hasattr(dog1, 'age')) #>>>True #没有返回False print(hasattr(dog1, 'color')) #>>>True
d. 删除某个对象的某个属性: delattr
delattr(dog1, 'name') # print(dog1.name) 'Dog' object has no attribute 'name'
总结:声明一个类,有多个对象属性, 通过方法去访问、修改、添加、删除对象的属性。判断某个属性是否存在
3.对属性假的私有化:
定义: 不希望别人随便访问和修改的属性,就在属性名前加一个'_',提示别人不要在外部直接访问。如果绝对私有进制外部访问就在属性前面加两个下划线. 这样的属性一般会提供对应的访问和修改的方法
例如: 创建一个学生类
def main(): class Student(): def __init__(self, name, age, score): self.name = name self._age = age self.score = score def set_age(self, age): #可以在这儿对赋的值进行一系列的判断和操作 try: age = int(age) if age < 0 age = 0 if age > 150 age = 150 except: age = 0 self._age = age def get_age(self): return self._age stu1 = Student('XianMing', 20, 99) stu1.set_age(22) #通过set方法去给对应的私有属性赋值 print(stu1.get_age()) #通过get方法去拿到私有属性的值 if __name__ == '__main__': main()