Python面向对象进阶
1.对象属性的增删改查
1.1 查 - 获取属性值
1.1.1 对象.属性 - 获取对象指定属性的值
1.1.2 getattr(对象,属性) - 获取对象指定属性的值,如果属性不存在则报错
1.1.3 getattr(对象,属性, 默认值) - 获取对象指定属性的值,若属性不存在,则返回默认值
class Student:
# __slots__ = ('name','age','study_id')
def __init__(self, name, age=18, study_id='000'):
self.name = name
self.age = age
self.study_id = study_id
# 在当前类的对象被打印的时候自动调用,并且将这个方法的返回值作为打印结果(返回值必须是字符串)
def __repr__(self):
return f'<{
str(self.__dict__)[1:-1]}>'
stu1 = Student('小明')
stu2 = Student('小花', 20, '0001')
print(stu1.name)
print(getattr(stu1, 'name'))
value=input('请输入需要获取的属性')
print(getattr(stu1,value))
print(getattr(stu1, 'gender', '男'))
1.2 增、改
1.2.1 对象.属性 = 值 - 当属性存在的时候修改属性的值,当属性不存在时添加属性
1.2.2 setattr(对象,属性,值) - 添加属性
stu1.name = '张三'
print(stu1.__dict__)
print(stu1)
stu1.gender = '女'
print(stu1)
print(stu1.gender)
setattr(stu1, 'score', 100)
print(stu1)
print(stu1.score)
1.3 删
1.3.1 del 对象.属性 - 删除指定对象的指定属性
1.3.2 delattr(对象,属性名) - 删除指定对象的指定属性
del stu1.age
print(stu1)
delattr(stu1, 'study_id')
print(stu1)
class A:
# __slots__属性的值就是当前类的对象最多能够拥有的对象属性,如果为空,那么这个类的对象就不能有对象属性
# 注意:如果给类设置了__slots__,那么这个类的对象就不能再使用__dict__属性
__slots__ = ('x', 'y', 'z')
def __init__(self):
self.x = 10
a = A()
a.y = 100
a.z = 200
# a.m=300 # 报错
2.内置属性
class A:
“”“测试类A”""
pass
2.1 __doc__ - 类的说明文档
print(A.__doc__)
print(int.__doc__)
print(int(10).bit_length())
print(dict.__doc__)
2.2 _module_ - 获取类所在的模块(类属性&