"""
@ Author: shishaoquan
@ Time:  
@ Project: 


"""


# 让代码不在臃肿
# 为了帮助你写出优质的、漂亮的
# 如果代码中有重复代码
# 重复使用
# 函数
#

# 给计算机写软件 是 越来越复杂
# 软件危机，软件是越来越复杂了
# 有没有什么
# 编程范式
# 面向对象编程/ 面向过程编程
# 指令式编程 ---> 面向过程的编程
# 有些指令是 重复的去写，这个时候

# 面向过程 ---> 程序代码比较简单时，没有任何毛病
# 随着程序越来越复杂  ---> 才能有良好的可读性
# 没有任何方法论：解决复杂程序问题，从逻辑上组装成一个整体
# 面向对象不会给你的程序代码任务好处
# 数据多、函数多的时候，代码变得更加优雅
# Python对于函数


# 对象：接受消息的实体
# 出门，向左转，向右转
# 指令式的编程，变成非常繁琐的内容
# 你看，接受到消息后
# 消息发给这个对象，就完事了
# 简单和优雅
# 优雅的击中
# 给适当的对象发送适当地
# 给对象发消息达到解决问题的目标
# 面向对象的编程世界里
# 对象 = 数据 + 函数

# 对象将数据和操作数据的函数从逻辑上变成了一个整体
# 向对象发出消息
# 最主要的就是造对象
# 对象时优雅的
# 从逻辑上形成了一个整体
# 不仅有数据，也有操作数据的方法
# 类

# 类：人类、猫咪类、狗类
# 类(类型) ：将一大类对象共同的特征抽象出来之后得到的抽象概念。
# 通俗一点：模板与模型
#

# 简单的说，类是对象的蓝图，有了类，才能创建出这种类型的对象。
# 第一步，把类造出来
# 发消息
#
# 三步骤：
# 1. 定义类
# 2. 造对象
# 3. 发消息


# 类 是一个抽象的概念
# 对象 是具体的概念
# 有了类，蓝图和模板之后，一个真正的实体
# 方法论
# 最难的就是第 1 步
# 自己去想 10 个类
# 有什么动态特征，有什么静态特征
# 定义类时，一件是数据抽象(属性)
# (方法)


# 万事万物届时对象
# 属性、方法
#


# ---------- 学生管理系统 -------------
# 类的命名 使用   ------驼峰命名法-----
# 写到类里的函数 称为  方法
# 第一步：

class Student:
    """学生"""
    # 数据抽象(属性)
    def __init__(self, name, age):
        # 给对象绑定 name 属性
        self.name = name
        self.age = age

    # 行为抽象(方法)

    def eat(self):
        """吃饭
        """
        print(f'{self.name} 正在吃饭...')

    def study(self, course_name):
        """
        学习
        :param course_name:
        :return:
        """
        print(f'{self.name} 正在学习 {course_name} 课程.')

    def play(self, game_name):
        """
        游乐
        :param game_name:
        :return:
        """
        print(f'{self.name} 正在玩{game_name} 游戏.')

    def watch_tv(self, tv_name):
        """

        :param tv_name: 看的名字
        :return:
        """
        if self.age < 18:
            print(f'{self.name} 未满 18 岁, 只能看熊出没.')
        else:
            print(f'{self.name} 正在观看电视剧.')

# 第二步：



















