初识面向对象
1.编程范式(理解,科普用的)
编程范式:编程的规范,比如信封规范
面向对象是一种编程范式
1.过程化/命令式编程(面向过程)op
2.事件驱动编程
用户与程序交互的编程
3.面向对象编程 oop
4.函数式编程(以函数为主的编程)
1.2 面向过程
什么是面向过程:按照一步一步的流程进行编程 (基础课ATM项目)
比如:
洗衣机:
放衣服 --》 加洗衣粉 -》 加水 -》 漂洗 -》 脱水
代表语言:C, Basic
1.3 面向对象
看名字就是看重对象,当解决洗衣机问题的时候,把对象抽象成概念,后面再实例化
比如我们找对象:
先想一个模板:
要xxxx眼睛,xxxx鼻子,xxxx嘴巴
实例化(找类的一个具体例子)
2.类和对象
何为类, 何为对象
类:类别,模板
对象:例子
lol,王者
中单就是一个类别 (类)
具体英雄:亚索,王昭君(对象)
2.1类的定义与 实例化对象
格式:
class 类名:
类代码(属性,行为)
# 实例化对象
变量名 = 类名()
注意书写格式:
类名的定义: 使用大驼峰法命名方法
定义类中的变量就是属性,函数就叫方法
class Hero:
name = "英雄名字"
hp = 0
armor = 0
move = 0
cd = 0
Garen = Hero()
print(Garen.__dict__)
Garen.name = "盖伦"
Garen.hp = 616
Garen.armor = 27
Garen.cd = 0
Garen.move = 340
print(Garen.__dict__)
Teemo = Hero()
print(Teemo.__dict__)
Teemo.name = "提莫"
Teemo.hp = 550
Teemo.move = 345
Teemo.cd = 0
print(Teemo.__dict__)
2.2 __init__ 初始化方法
实例化方法:构造方法,魔法方法
用于设计对象自身属性,这些都不需要手动调用(对象实例化就自动运行了)
因为实例化对象自动自行,配合self(自身)进行使用
2.3 self
self:就是对象自己的意思
class Hero:
def __init__(self, name, say):
self.name = name
self.say = say
def info(self):
print(f"{self.name}:{self.say}")
garen = Hero("盖伦", "人在塔在")
teemo = Hero("提莫", "提莫队长正在待命")
garen.info()
teemo.info()
2.4 类文档
def func():
"""
这个是文档字符串
:return:
"""
print(func.__doc__)
class A:
"""
类文档:
不需要实例对象
就是类的书名数
"""
print(A.__doc__)
二、封装
2.1、封装的定义
封装:密封包装
封:密封
装:包装
只能通过规定的方法访问数据,包装数据具有安全性,维护性和易用性
有写数据不想让别人知道,但是允许特定或者某些函数可以看到
怎么去隐藏这些数据呢?
实现封装的属性,不能直接访问,通过公共方法get/set访问
2.2、属性隐藏
在;类的定义中一些不愿意公开的,可以进隐藏(私有,private), 在属性名左边加上两个下划线就可以实现了隐藏(私有,private),只能内部类方法
class People:
def __init__(self, name, age, height, face):
self.name = name
self.age = age
self.height =height
self.__face = face
def getFace(self):
return self.__face
def setFace(self, face):
self.__face = face
ziliang = People("梓良", 18, 180, "帅哥")
print(ziliang.name)
ziliang.name = "xxx"
print(ziliang.name)
ziliang.age = 22
print(ziliang.age)
print(ziliang.getFace())
ziliang.setFace("丑b")
print(ziliang.getFace())
print(ziliang.__dict__)
3.property()函数
property 可以设置获取,修改以及删除对象的属性
格式:
property(fget=None, fset=None, fdel=None)
fget 是获取属性数值的方法
fset 是设置修改属性值的方法
fdel 是删除属性值的方法
property
就是把隐藏属性变成和普通属性一样的用法,规范代码用的
class People:
def __init__(self, name, age, height, face):
self.name = name
self.age = age
self.height =height
self.__face = face
def getFace(self):
return self.__face
def setFace(self, face):
self.__face = face
def delFace(self):
del self.__face
face = property(fget=getFace, fset=setFace, fdel=delFace)
ziliang = People("梓良", 18, 180, "帅哥")
ziliang.face = "丑b"
print(ziliang.face)
print(ziliang.__dict__)
del ziliang.face
print(ziliang.__dict__)