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

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

  1、万物皆对象

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

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

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

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

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

  面向对象设计的规则

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

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

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

  方法:登入、存款、取款

  # 思路:

  # 定义类 --> 人类

  # 编写类的属性:姓名、年龄、id(身份证号)、手机号

  # 编写类的方法:吃、喝、玩、睡、上班

  class Person:

  # 编写属性(变量)

  name="杨幂"

  age=30

  gender='女'

  # 我不想用指定属性,我想自己创建姓名

  def set_param(self%2c name): # age、gender一样操作

  self.name=name

  print(f'姓名:{self.name}')

  # 如属性很多,那就很麻烦,我们可以使用 def __init__去构造

  # 编写方法(函数)%2c无参

  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('张三')

  # 类访问方法,需要添加一个装饰器@classmethod

  Person.eat

  # def __init__ 去构造属性

  class Person:

  def __init__(self%2c name%2c age%2c gender):

  self.name=name

  self.age=age

  self.gender=gender

  # 编写方法(函数)%2c有参

  def eat(self%2c food):

  print(f'{self.name}在吃{food}')

  def drink(self%2c 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("该人的信息:"%2c self.name%2c self.age%2c self.gender)

  # 构造对象输出信息

  lihaoran=Person(name='李浩然'%2c age=32%2c gender='男')

  # 调用方法

  lihaoran.info

  lihaoran.work

  lihaoran.sleep

  私有属性可以被查看,但是不能被修改 —> get方法

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

  """封装(属性私有化)"""

  class Student:

  def __init__(self%2c name%2c age%2c xh%2c id%2c 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%2c newadress):

  self.__address=newadress

  def info(self):

  print('学生的基本信息:'%2c self.name%2c self.age%2c self.xh%2c self.__id%2c self.__address)

  zhangsan=Student('Tom'%2c 18%2c '001'%2c '340104555555555555'%2c '南京')

  # 私有属性(不允许外界读取+修改),如果想查看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

  继承在父类基础上构造出新的类,子类可以拥有继承**父类的属性和方法 多态:指一个对象可以用子类的特点也可以父类的特征

  class Animal:

  def __init__(self%2c name%2c color):

  self.name=name

  self.color=color

  def eat(self%2c food):

  print(f'{self.name}在吃{food}')

  def drink(self%2c 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%2c name%2c color%2c age):

  super.__init__(name%2c color) # super()调用父类对象

  self.age=age # 属性有个性(构造属性重写)

  def kaijia(self):

  print(f"{self.name}看家")

  hashiqi=Dog('哈士奇'%2c '黑白'%2c 6)

  hashiqi.eat('骨头')

  # 多态 方法上个性(构造方法重写) 独特个性

  hashiqi.kaijia

  class Cat(Animal):

  def __init__(self%2c name%2c color):

  super.__init__(name%2c color) # super()调用父类对象

  cat=Cat('波斯猫'%2c 'red')

  cat.eat('鱼')

  # cat.kaijia 因为猫不会看家,这是狗的独特个性

推荐阅读