面向对象 python python面向对象编程思维


面向对象 python python面向对象编程思维


一、类和对象1、万物皆对象
2、对象:用来描述客观事物的一个 实体 , 由一组 属性 和 方法 构成
3、属性:对象具有的各种特征 , 每个对象的每个属性都有特定值
4、方法:对象执行的操作
5、类:对象的分类 , 分类就是认识对象的过程
私信小编01即可获取大量python学习资源
【面向对象 python python面向对象编程思维】面向对象设计的规则
1、图书类: 属性:图书编号、书名、书的作者、上架日期、借出状态
功能(方法):借出和归还
2、银行卡类: 属性:卡号、银行卡名称、密码、姓名、余额
方法:登入、存款、取款
二、面向对象创建:定义某个类的对象具有的属性(变量)和方法(函数)
# 思路:# 定义类 --> 人类# 编写类的属性:姓名、年龄、id(身份证号)、手机号# 编写类的方法:吃、喝、玩、睡、上班class Person:# 编写属性(变量)name = "杨幂"age = 30gender = '女'# 我不想用指定属性 , 我想自己创建姓名def set_param(self, name):# age、gender一样操作self.name = nameprint(f'姓名:{self.name}')# 如属性很多 , 那就很麻烦 , 我们可以使用 def __init__()去构造# 编写方法(函数),无参def eat(self):print('eating')def drink(self):print('drinking')def play(self):print('playing')def sleep(self):print('sleeping')@classmethoddef work(self):print('working')# 对象的构造YM = Person()# 调用方法YM.sleep()YM.work()zs = Person()zs.set_param('张三')# 类访问方法 , 需要添加一个装饰器@classmethodPerson.eat()# def __init__() 去构造属性class Person:def __init__(self, name, age, gender):self.name = nameself.age = ageself.gender = gender# 编写方法(函数),有参def eat(self, food):print(f'{self.name}在吃{food}')def drink(self, sthing):print(f'{self.name}在喝{sthing}')def play(self):print(f'{self.name}在玩')def sleep(self):print(f'{self.name}在睡觉')def work(self):print(f'{self.name}正在工作')def info(self):# 输出信息print("该人的信息:", self.name, self.age, self.gender)# 构造对象输出信息lihaoran = Person(name='李浩然', age=32, gender='男')# 调用方法lihaoran.info()lihaoran.work()lihaoran.sleep()三、面向对象思想:封装、继承、多态1、封装(属性私有化)
  • 私有属性可以被查看 , 但是不能被修改 —> get方法

  • 私有属性不被外界查看 , 但可以被外界修改 —> set方法】

"""封装(属性私有化)"""class Student:def __init__(self, name, age, xh, id, address):self.name = name# 默认公共属性(允许外界读取 修改)self.age = age# 默认公共属性(允许外界读取 修改)self.xh = xhself.__id = id# 私有属性(不允许外界读取 修改)self.__address = address# 私有属性(不允许外界读取 修改)# 私有属性可以被查看 , 但是不能被修改 ---> get方法def getid(self):return self.__iddef setaddress(self, newadress):self.__address = newadressdef info(self):print('学生的基本信息:', self.name, self.age, self.xh, self.__id, self.__address)zhangsan = Student('Tom', 18, '001', '340104555555555555', '南京')# 私有属性(不允许外界读取 修改) , 如果想查看get方法# print(zhangsan.id) # 没有getid-->报错AttributeError: 'Student' object has no attribute 'id'read_student_id = zhangsan.getid()print(f'查看张三id:{read_student_id}')zhangsan.info()zhangsan.setaddress("合肥")zhangsan.info()2、继承、多态
  • 继承在父类基础上构造出新的类 , 子类可以拥有继承**父类的属性和方法
  • 多态:指一个对象可以用子类的特点也可以父类的特征

推荐阅读