初识面向对象

发布时间 2024-01-04 16:31:01作者: Formerly0^0

初识面向对象

1.面向对象

  • 面向对象核心在于对象
  • 对象相当于一个整体,把数据和功能整合到一起
# 学生:自己的名字,自己的年龄,自己的性别
# 比如一个学生可以上课、写作业、运动;
def student():
    def sport():
        ...

    student_dict = {
        'name': 'name',
        'sport': sport
    }
# 比如一个老师可以教课、批改作业;
# 比如一个运动员可以训练、参加比赛

# 学校 :
# 学校有名字
# 学校有地址

# 学生 : 运动员,老师,上课学生 -- 对象
# 同属于一个学校,都有各自的名字,年龄,职责  -- 类

2.类导读

  • 类即类别/种类,是面向对象分析和设计的基石,如果多个对象有相似的数据与功能,那么该多个对象就属于同一种类
  • 有了类的好处是:
    • 我们可以把同一类对象相同的数据与功能存放到类里,而无需每个对象都重复存一份,这样每个对象里只需存自己独有的数据即可,极大地节省了空间
  • 所以,如果说对象是用来存放数据与功能的容器,那么类则是用来存放多个对象相同的数据与功能的容器

img

  • 综上所述,虽然我们是先介绍对象后介绍类,但是需要强调的是:
    • 在程序中,必须要事先定义类,然后再调用类产生对象(调用类拿到的返回值就是对象)
    • 产生对象的类与对象之间存在关联,这种关联指的是:对象可以访问到类中共有的数据与功能
    • 所以类中的内容仍然是属于对象的,类只不过是一种节省空间、减少代码冗余的机制
  • 面向对象编程最终的核心仍然是去使用对象

3.什么是类

  • 类即类别、种类,是面向对象设计最重要的概念,对象是特征与技能的结合体,而类则是一系列对象相似的特征与技能的结合体
  • 所以,先有鸡和先有蛋的问题就出来了
    • 先有的一个个具体存在的对象(比如一个具体存在的人)
    • 还是先有的人类这个概念,这个问题需要分两种情况去看

4.定义类

  • 定义类,在类中定义方法,在方法中去实现具体的功能

  • 实例化类并的个一个对象,通过对象去调用并执行方法

  • 注意:

    • 注意:类名称首字母大写&驼峰式命名
    • py3之后默认类都继承object
    • 在类种编写的函数称为方法
    • 每个方法的第一个参数是self
class Message:
      def send_email(self, email, content):
        data = f"给{email}发邮件,邮件内容是{content}"
        print(data)


msg_object = Message() 
msg_object.send_email("cx991217@163.com","欢迎注册网易邮箱")

登陆注册练习

class ATM:
    user_pwd_dict = {}

    def __init__(self):
        self.name = None
        self.pwd = None
        self.balance = 1000

    def login(self):
        print("登陆")
        name = input("请输入姓名:")
        pwd = input("请输入密码:")
        if not name == self.user_pwd_dict[name] and pwd == self.user_pwd_dict[pwd]:
            return "登陆失败"
        self.name = name
        self.pwd = pwd
        return "登陆成功"

    def register(self):
        print("注册")
        name = input("请输入姓名:")
        pwd = input("请输入密码:")
        self.user_pwd_dict[name] = name
        self.user_pwd_dict[pwd] = pwd
        return "注册成功"

    def out_money(self):
        money = int(input("请输入取款金额:"))
        if money > self.balance:
            return "余额不足"
        self.balance -= money
        return "取款成功"


atm = ATM()
print(atm.register())
print(atm.login())
print(atm.out_money())