面向对象
1、什么是面向对象?
2、为什么学习面向对象
面向对象这个词,出现在上世纪80年代 相对于面向过程而言
Smalltalk : 最先提出面向对象(有好多人不承认)
软件业务的扩大 世界观 功能要求也越来越复杂
C语言很难驾驭复杂的软件的开发
一种新的解决宏观来展示描述世界的编程 —> 面向对象 —> 面向对象是一种模拟
面向对象(先造世界):
面向对象是模拟人认知整个世界的行为,进行分类处理的过程
五感 —> 收集信息 —> 透过大脑 —> 分析抽象 —> 建模 —> 分门别类
3、类和对象
类: 对一类相同或相似事物的统称
静态的特征:颜色、体重、肤色、皮毛
动态的行为:吃饭、学习、打架、睡觉 函数
对象(实例):就是类中的一个真实案例
类是模板,对象就是模板拓出来的一个真实的案例
Python是脚本语言
Python是弱类型语言
Python既是面向对象,又是面向过程
Python动态语言
Java是静态语言
4、Python如何定义类 如何创建对象(重点)
面向对象编程:
在Python中定义一个类,用class关键字
Python中的类名称定义规则与其他编程语言一致
遵循的是大驼峰法:每个单词首字母大写
定义类:
抽取静态特征
python3中默认定义的所有类继承object
class User <==> class User(object):
Python中类的定义:
class 类名称(object):
#__init__初始化
#重写方法 __init__(魔法属性)
#self参数,参数必须存在,不能去掉
#习惯性写成self,代表的对象本身,类似this
def _init_(self):
#init 初始化函数中,定义类的静态特征
self.属性名称 = 属性值
self.属性名称 = 属性值
self.属性名称 = 属性值
Python中如何获取对象:
对象名称 = 类名称( ) #初始化对象,构建对象
#可以在构建完成后修改对象的属性值
#对象的属性,应该在对象创建的时候,初始化出来
class User(object):
def __init__(self):
# init 初始化函数中,定义类的静态特征
self.name = "yt"
self.age = 20
self.height = 158
self.email = "7427@qq.com"
#构建对象
u = User()
print(u.age)
#可以修改属性
u.name = "xiaozhan"
u.email = "xiaozhan@qq.com"
print(u.name)
运行结果:
20
xiaozhan
xiaozhan@qq.com
class Cat(object):
#对象的属性,应该在对象创建的时候,初始化出来
def __init__(self,name,gender,color,age):
#self.xxx 指的是类的静态属性
self.name = name
self.gender = gender
self.color = color
self.age = age
#猫不仅仅有属性,还有动作
def speak(self):
#在类的方法中,可以直接访问到类的任何属性和方法!
print("喵喵喵,我是喵星人")
print("喵,我是{},我要吃肉".format(self.name))
def eat(self,food):
print("本喵正在吃{}".format(food))
def __str__(self):
#这个是默认的魔法方法
#快速在控制台上查看对象的属性
return "[name= "+self.name+"]"
#创建对象
qiqi = Cat("柒柒","女","黄色",2)
print(qiqi.name)
print(qiqi.age)
#调用猫的speak方法
qiqi.speak()
#调用eat方法
qiqi.eat("精品猫粮")
运行结果:
柒柒
2
喵喵喵,我是喵星人
喵,我是柒柒,我要吃肉
本喵正在吃极品猫粮