# -*- coding:utf-8 -*-
1.类的基本知识
python是面向对象的编程语言,面向对象的特点:继承、封装、多态
面向对象编程:和面向过程一样,是一种编程思想
类和对象:
什么是类?类是具有相同属性和行为方法的事物的抽象的集合
类的例子:人类,鱼类,猴子类
人类的属性:身高、体重、性别、年龄、姓名
人类的行为:吃喝拉撒睡
什么是对象?类的具体的实例化
人类中的对象:马云、麻花腾(马化腾)、丁三石(丁磊)
2.类的作用:创建对象,一般会在类中定义一些属性和函数,当使用类创建对象的时候,该对象就会拥有类中定义的这些属性和函数
类中一些属性和函数,是由所有的对象身上的共同属性和行为抽离出来的
# 对象的作用:实现函数和属性的调用执行者
d1 = {'name': '张三', 'age': 22, 'phone': 110}
d2 = {'name': '李四', 'age': 21, 'phone': 120}
student_list = [d1, d2]
3. 在python中如何声明一个类型
# class 班级群体
# object 继承的父类 object基类 顶级父类
pass 保证语法完整性
class People(object):
# pass 保证语法完整性
# pass
# 人出生的时候,已经具有的性别、年龄、身高、体重
# 初始化函数,在创建对象的时候自动调用
# __init__ 内置函数
def __init__(self,name,age,phone):
# 在这个函数中需要将创建对象时就应该拥有的一些属性赋值
# print('..............')
#对象.属性名=属性值
self.name = name
self.age = age
self.phone = phone
4.创建People类创建对象
# 创建对象的基本格式: 对象名=类名()
# 当创建一个对象时,会在内存中开辟一块空间,来存放这个对象,这个对象是有一个地址的
# 每次创建的对象都是一个单独的个体,他们的内存地址都是不一样的
p1 = People('张三', 22, 110)
# p2 = People()
# student = [p1, p2]
print(p1)
输出结果为:<__main__.People object at 0x00000000007145C0>
p1是指针,存放对应对象的地址:0x0000000000A4C198
# __name__ __main__当前文件
# <__main__.People object at 0x0000000000A4C198>
# 0x0000000000A4C198 内存地址
# 内存:程序运行时,在计算机中占用的空间
# python中自动管理内存的
# 电脑上的500G 1TB这种是硬盘空间(存储空间)
5.获取对象的属性值
# 格式: 属性值 = 对象.属性名
# p1.name
name = p1.name
print(name)
age = p1.age
print(age)
输出结果:张三
22
6. 修改对象的属性值
对象.属性名 = 属性值
p1.name = '李四'
print(p1.name)
输出结果:李四
7. python中用来设置对象属性值的函数setatter
# 1.要设置属性值的对象 2.要设置的属性名 3.要设置的属性值
setattr(p1, 'age', 21)
print(p1.age)
输出结果: 21
8.可以给对象添加新的属性
# 对象.属性名=属性值 如果这个属性不存在,那就是添加属性
p1.sex = '男'
print(p1.sex)
# p2 = People('王五', 23, 120)
# p2没有sex属性,若执行,则会报错
# print(p2.sex)
执行结果:男
9.删除对象的属性
对象的属性被删除之后,就不能再使用了
# AttributeError: sss要删除的属性不存在
# del p1.sss
del p1.sex
# print(p1.sex)
删除对象属性的函数
delatter
# 1.要删除的对象 2.要删除的属性名
delattr(p1, 'phone')
# 删除之后,就不能再使用这个属性了
# print(p1.phone)
10. setattr动态添加或者修改属性
attr_dict = {'iq': '150', 'eq': '150', 'color': 'yellow'}
# for 循环遍历字典
for key,value in attr_dict.items():
#key是属性名 value是属性值
# p1.key = value 这种方式无法添加 相当于写了 p1.'iq' = '150'
# setattr 可以将一个字符串的属性名 添加到对象的属性中
setattr(p1, key, value)
print(p1.iq)
输出结果:150
11.delattr 动态删除属性
删除对象p1中的属性
attr_list = ['iq', 'eq', 'color']
for attr in attr_list:
#可以使用delattr删除函数
delattr(p1,attr)
# 对象删除之后,就不能再用了
# print(p1.iq)