类:是指具有相同属性,和行为方法(函数)的对象,的抽象的集合。

对象:是指类的具体实例化


# 在python中如何声明一个类


# 格式:class 类名(父类):


class people(object):
     pass


  pass: 没有实际意义,只是为了保证语法的完整性,    object: 基类,顶级父类(所有类的父类)




class People(object):
#如果需要在创建对象的时候,给对象属性赋值,就可以在初始化函数中传递参数,给属性赋值,如果不需要初始化对象属性值,就不用写
       def __init__(self,name):#(类的初始化函数),在创建对象的时候自动调用
          # 在这个函数中需要将创建对象时就应该拥有的一些属性赋值
            # 格式:对象.属性名 = 属性值
             self.name = name




# 使用People类创建一个对象


# 格式:对象名 = 类名()


p1 = People('小明')


# 当创建一个对象时,会在内存中开辟一块空间,来存放这个对象,这个对象是有一个地址的


# 每次创建的对象都是一个单独个体,他们的内存地址都是不一样的






# 获取对象的属性值


# 格式:对象.属性名

name = p1.name

#使用这种格式获取属性值,当属性不存在时会报错

name = p1.sss
AttributeError: 'People' object has no attribute 'ssss'

# getattr(obj, name, default) obj:要获取属性值的对象default:若要d当获取的属性不存在,会给变量一个的默认值

name = getattr(p1, name, '小明')


# 修改对象的属性值


# 1.对象名.属性名 = 属性值    属性名存在时,修改此属性值,当该属性名不存在时,就是为该对象添加该属性


p1.name = '张三'

# 2.setattr(obj, name, value)    obj:要修改属性值的对象value:要修改的属性值

setattr(p1, 'name', "李四")
print(p1.name)
>>>李四


# 删除对象的属性


# 对象的属性被删除之后,就不能再使用了


# 1.del 对象名.属性名


del p1.sex

# 2.delattr(obj, name)    obj:要删除的对象    name:要删除的对象属性

delattr(p1, 'sex')



# 若删除的属性不存在,会抛出 AttributeError: sss 要删除的属性不存在的异常