面向对象并不是一种技术,而是一种思想,是一种解决问题的最基本的思维方式! ==首先想到的是应该由什么样的主体去实现什么样的功能,再把该主体的属性和功能统一的进行封装,最后才去实现各个实体的功能。
1、面向对象中两个比较重要概念
☆ 对象
对象,object,现实业务逻辑的一个动作实体就对应着OOP编程中的一个对象!
所以:① 对象使用属性(property)保存数据!② 对象使用方法(method)管理数据!
☆ 类
对象如何产生?又是如何规定对象的属性和方法呢?
答:==在Python中,采用类(class)来生产对象,用类来规定对象的属性和方法!也就是说,在Python中,要想得到对象,必须先有类!==
为什么要引入类的概念? 类本来就是对现实世界的一种模拟,在现实生活中,任何一个实体都有一个类别,==类就是具有相同或相似属性和动作的一组实体的集合!==所以,在Python中,对象是指现实中的一个具体的实体,而既然现实中的实体都有一个类别,所以,OOP中的对象也都应该有一个类!
2、类的定义
在Python中,我们可以有两种类的定义方式:Python2(经典类)和 Python3(新式类)
经典类:不由任意内置类型派生出的类,称之为经典类
class 类名: # 属性 # 方法
新式类:
class 类名(object): # 属性 # 方法
3、类的实例化(创建对象)
类的实例化就是把抽象的事务具体为现实世界中的实体。
类的实例化就是==通过类得到对象!==
类只是对象的一种规范,类本身基本上什么都做不了,必须利用类得到对象,这个过程就叫作==类的实例化!==
基本语法:
对象名 = 类名()
在其他的编程语言中,类的实例化一般是通过new关键字实例化生成的,但是在Python中,我们不需要new关键字,只需要类名+()括号就代表类的实例。
案例:把Person类实例化为为对象p1
# 1、定义一个类 class Person(object): # 定义相关方法 def eat(self): print('吃零食') def drink(self): print('喝可乐') # 2、实例化对象 p1 = Person() # 3、调用类中的方法 p1.eat() p1.drink() p2 = Person()
类中的self就是谁实例化了对象,其就指向谁
1、什么是魔术方法
魔术变量:__name__
,__file__
这些都是魔术变量(拥有特殊功能的变量)
在Python中,__xxx__()
的函数叫做魔法方法,指的是具有==特殊功能==的函数。
魔术方法都有自己的触发条件:
__init__()
当实例化对象时,其会自动被触发(被调用)
__del__()
当手工删除对象或对象被销毁时,其会自动被触发(被调用)
2、__init__()
方法(初始化方法或构造方法)
思考:人的姓名、年龄等信息都是与生俱来的属性,可不可以在生产过程中就赋予这些属性呢?
答:可以,使用__init__()
方法,其作用:实例化对象时,连带其中的参数,会一并传给__init__
函数自动并执行它。__init__()
函数的参数列表会在开头多出一项,它永远指代新建的那个实例对象,Python语法要求这个参数必须要有,名称为self。