一、面向对象编程
- 我们最开始写代码是面向过程编程的,即:一步步按顺序去实现
- 后来我们学习了函数,把这些功能封装到函数里面,需要实现某个功能的时候直接调用就行,这样可以减少代码的重复性,这就是函数式编程
- 现在我们学习第三种编程方法:面向对象编程—— 一切事物皆为对象 ,面向对象编程是一种编程设计思想。
面向对象程序设计作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。面向对象的语言支持的概念包括:类与对象、继承、多态。
二、类和实例
类是抽象出来的模板(共性),比如 歌手类
实例是根据我们的类创建出来的一个个具体的“对象,每个对象都有相同的方法,但各自的数据不同,例如:许嵩、陈奕迅、李荣浩
1、定义类的方法(与定义函数的方法类似)
- 定义函数的方法:
def f():
pass
- 定义类的方法:
方法:class 类名:
- 例如定义一个歌手类,注意:类名同变量名,使用大驼峰命名法; eg:HeloWorld, helloWorld
- 三引号中的内容是解释这个类的用途
class Singer:
'''这是一个歌手类'''
pass
2、实例化对象
vae = Singer()
总结:
1、Python中一切皆对象
2、新建一个对象的过程叫做实例化,而面向对象就是这个类的一个实例
3、属性
每个对象都有相同的方法,但各自的数据可能不同,我们需要让我们的对象拥有自己的个性
class Singer:
'''这是一个歌手类'''
pass
vae = Singer()
vae.age = '32' # 句点法 赋值
vae.height = '180cm'
print(vae)
# <__main__.Singer object at 0x00000168054D42E8>
# 有一个内存地址,用于存放他的这些属性
print(vae.age)
# 32, 句点法,去引用
- 类属性VS实例属性:类不能访问我们的实例属性
print(Singer.age)
# AttributeError: type object 'Singer' has no attribute 'age'
二、初始化
1、类和函数
- 以下完成了类和实例:
class Singer:
pass
Vae = Singer()
Vae.age = 32
Eason = Singer()
Eason.age = 45
print(Vae.age) # 32
print(Eason.age) # 45
- 现在我们使用函数:
class Singer:
pass
Vae = Singer()
Vae.age = 32
Eason = Singer()
Eason.age = 45
def add_singer(s1, s2):
singer = Singer()
singer.age = s1.age + s2.age
return singer
hh = add_singer(Vae, Eason)
print(hh.age)
2、类和方法
class Cat():
'''这是一个猫类'''
def add_cat(cat):
print("{} {}".format(cat.color, cat.eat))
kitty = Cat()
kitty.color = "white"
kitty.eat = "food"
Cat.add_cat(kitty) #类下面方法的调用 white food
kitty.add_cat() #white food
总结:
1、实例能访问类属性,也能访问实例属性
2、类只能访问类属性
3、self简介
self参数传入的是你创建的对象
self可直接将对象带参数传入类中的方法,像这种在对象中封装数据,对类进行优化的方法叫做封装
class Cat:
'''这是一个猫类'''
def add_cat(self):
print("{} {}".format(self.color, self.eat))
kitty = Cat()
kitty.color = "white"
kitty.eat = "food"
Cat.add_cat(kitty) #类下面方法的调用 white food
kitty.add_cat() #white food
4、初始化(在类里面添加实例就是初始化)
init: 自动被调用,把实例下的属性放到类里面
class Cat:
'''这是一个猫类'''
def __init__(self, color, eat, age):
self.color = color
self.eat = eat
self.age = age
def add_cat(self):
print("{} {}".format(self.color, self.eat))
kitty = Cat("white", "food", 1)
print(kitty.color) #white
三、练习
class rectangl:
'''这是一个矩形类'''
def __init__(self, length, height):
self.length = length
self.height = height
def area(self):
area = self.length*self.height
return area
def perimeter(self):
perimeter = (self.length + self.height)*2
return perimeter
A = rectangl(5, 4)
print("矩形A的面积是:", A.area()) #矩形A的面积是: 20
print("矩形A的周长是:", A.perimeter()) #矩形A的周长是: 18