什么是面对对象编程
程序设定的范式
面对对象编程可以是代码程序更加的可控更加让人理解
面对对象编程就是把现实世界变得抽象并建立起对象模型
程序就是不同对象之间相互调用的逻辑
例:人 动物 车
这些都是现实世界的东西那就可以在这段代码中抽象出这三种模型
这些模型之间都有一些联系
例:人养宠物 宠物又属于动物那么人和动物就有关系
人会购买车 会驾驶车 那么人和车又有关系
如果我们要在代码例实现这些关系的话那么久形成了面对对象的程序
实际就是不同对象相互调用的逻辑
我们抽象出的人在代码中属于类的这种概念
在现实世界我们抽象出的每一个对象在代码例就称之为类
对有每个人都会有 姓名 性别 年龄 像这些可以描述人的称之为属性
人是抽象出来的像 小明 小红 这些具体的人就叫实例
像人到具体的人就叫实例化
类的定义与实例化
在pytho里 通过class关键词来定义一个类比如我们需要定义一个人的类。按照 Python 的编程习惯,类名以大写字母开头可以这样定义:
class Person: pass
需要注意,在这个Person类的定义里面,并没有继承任何类,除了这样定义以外,还可以有以下两种定义方式
class Person(): pass class Person(object): pass
这三种情况有什么区别呢?在Python3中,是没有区别的,但是在Python2中,则有一定的区别。
在Python2中,对于第一种定义的方法,Person类只有有限的几个内建函数'__doc__', '__module__', 'name',而对于第二种、第三种定义的方法,则会继承Python object对象的更多的内建函数,可以更便捷的操作对象。这是Python2版本的差异。在Python3中,我们只需要知道这三种方式都可以定义一个类即可。
定义了类之后,就可以对类进行实例化了,实例化是指,把抽象的类,赋予实物的过程。比如,定义好Person这个类后,就可以实例化多个Person出来了。
创建实例使用类名+(),类似函数调用的形式创建:
class Person(object): pass xiaohong = Person() xiaoming = Person()
实例属性的定义
虽然前面我们已经通过Person类创建出xiaoming、xiaohong等实例,但是这些实例看上去并没有任何区别。在现实世界中,一个人拥有名字、性别、年龄等等的信息,在Python中,可以通过以下的方式赋予实例这些属性,并且把这些属性打印出来
xiaohong.name = 'xiaohong'
xiaohong.sex = 'girl'
xiaohong.age = 13
print(xiaohong.name)
print(xiaohong.sex)
print(xiaohong.age)
除此以外,这些属性也可以和普通变量一样进行运算。比如xiaohong长大了一岁:
xiaohong.age = xiaohong.age + 1