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
"""封装(属性私有化)""" 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 因为猫不会看家,这是狗的独特个性