初识面向对象
1.面向对象
- 面向对象核心在于对象
- 对象相当于一个整体,把数据和功能整合到一起
# 学生:自己的名字,自己的年龄,自己的性别
# 比如一个学生可以上课、写作业、运动;
def student():
def sport():
...
student_dict = {
'name': 'name',
'sport': sport
}
# 比如一个老师可以教课、批改作业;
# 比如一个运动员可以训练、参加比赛
# 学校 :
# 学校有名字
# 学校有地址
# 学生 : 运动员,老师,上课学生 -- 对象
# 同属于一个学校,都有各自的名字,年龄,职责 -- 类
2.类导读
- 类即类别/种类,是面向对象分析和设计的基石,如果多个对象有相似的数据与功能,那么该多个对象就属于同一种类
- 有了类的好处是:
- 我们可以把同一类对象相同的数据与功能存放到类里,而无需每个对象都重复存一份,这样每个对象里只需存自己独有的数据即可,极大地节省了空间
- 所以,如果说对象是用来存放数据与功能的容器,那么类则是用来存放多个对象相同的数据与功能的容器
- 综上所述,虽然我们是先介绍对象后介绍类,但是需要强调的是:
- 在程序中,必须要事先定义类,然后再调用类产生对象(调用类拿到的返回值就是对象)
- 产生对象的类与对象之间存在关联,这种关联指的是:对象可以访问到类中共有的数据与功能
- 所以类中的内容仍然是属于对象的,类只不过是一种节省空间、减少代码冗余的机制
- 面向对象编程最终的核心仍然是去使用对象
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())