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 因为猫不会看家,这是狗的独特个性