分享

一文让你掌握Python面向对象的编程思维

 gjzh090 2022-01-19

一、类和对象

1、万物皆对象

2、对象:用来描述客观事物的一个 实体 ,由一组 属性方法 构成

3、属性:对象具有的各种特征,每个对象的每个属性都有特定值

4、方法:对象执行的操作

5、类:对象的分类,分类就是认识对象的过程

私信小编01即可获取大量python学习资源

面向对象设计的规则

1、图书类: 属性:图书编号、书名、书的作者、上架日期、借出状态

功能(方法):借出和归还

2、银行卡类: 属性:卡号、银行卡名称、密码、姓名、余额

方法:登入、存款、取款

二、面向对象创建:定义某个类的对象具有的属性(变量)和方法(函数)

文章图片1
# 思路:# 定义类 --> 人类# 编写类的属性:姓名、年龄、id(身份证号)、手机号# 编写类的方法:吃、喝、玩、睡、上班class Person: # 编写属性(变量) name = '杨幂' age = 30 gender = '女' # 我不想用指定属性,我想自己创建姓名 def set_param(self, name): # age、gender一样操作 self.name = name print(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') @classmethod def 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 = name        self.age = age        self.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、封装(属性私有化)

文章图片2
  • 私有属性可以被查看,但是不能被修改 ---> get方法
文章图片3
  • 私有属性不被外界查看,但可以被外界修改 ---> set方法】
文章图片4
'''封装(属性私有化)'''class Student: def __init__(self, name, age, xh, id, address): self.name = name # 默认公共属性(允许外界读取+修改) self.age = age # 默认公共属性(允许外界读取+修改) self.xh = xh self.__id = id # 私有属性(不允许外界读取+修改) self.__address = address # 私有属性(不允许外界读取+修改) # 私有属性可以被查看,但是不能被修改 ---> get方法 def getid(self): return self.__id def setaddress(self, newadress): self.__address = newadress def 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、继承、多态

  • 继承在父类基础上构造出新的类,子类可以拥有继承**父类的属性和方法
  • 多态:指一个对象可以用子类的特点也可以父类的特征
文章图片5
文章图片6
class Animal:    def __init__(self, name, color):        self.name = name        self.color = color    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}在睡觉')# 继承class Dog(Animal):    def __init__(self, name, color, age):        super().__init__(name, color)  # super()调用父类对象        self.age = age  # 属性有个性(构造属性重写)    def kaijia(self):        print(f'{self.name}看家')hashiqi = Dog('哈士奇', '黑白', 6)hashiqi.eat('骨头')# 多态 方法上个性(构造方法重写) 独特个性hashiqi.kaijia()class Cat(Animal):    def __init__(self, name, color):        super().__init__(name, color)  # super()调用父类对象cat = Cat('波斯猫', 'red')cat.eat('鱼')# cat.kaijia() 因为猫不会看家,这是狗的独特个性

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多