一、类和物件
1、万物皆物件
2、物件:用来描述客观事物的一个 物体 ,由一组 属性 和 方法 构成
3、属性:物件具有的各种特征,每个物件的每个属性都有特定值
4、方法:物件执行的操作
5、类:物件的分类,分类就是认识物件的程序
很多人学习蟒蛇,不知道从何学起, 很多人学习寻找python,掌握了基本语法之后,不知道在哪里案例上手, 很多已经可能知道案例的人,却不怎么去学习更多高深的知识, 这三类人,我给大家提供一个好的学习平台,免费获取视频教程,电子书,以及课程的源代码! QQ群:101677771 欢迎加入,一起讨论学习
| 面向物件设计的规则 | 
| 1、图书类: 属性:图书编号、书名、书的作者、上架日期、借出状态 功能(方法):借出和归还 | 
| 2、银行卡类: 属性:卡号、银行卡名称、密码、姓名、余额 方法:登入、存款、取款 | 
二、面向物件创建:定义某个类的物件具有的属性(变量)和方法(函式)
 
# 思路:
# 定义类 --> 人类
# 撰写类的属性:姓名、年龄、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('张三')
# 类访问方法,需要添加一个装饰器@classmethod
Person.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、封装(属性私有化)
 
- 私有属性可以被查看,但是不能被修改 ---> get方法
 
- 私有属性不被外界查看,但可以被外界修改 ---> set方法】
 
"""封装(属性私有化)"""
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、继承、多型
- 继承在父类基础上构造出新的类,子类可以拥有继承**父类的属性和方法
- 多型:指一个物件可以用子类的特点也可以父类的特征
 
 
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 评论