一、简介
(1)对象
对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
(2)对象的静态特征和动态特征 人
-对象静态特征:人的身高、汽车的颜色、电脑的重量。
-对象动态特征:人的跑步行为、汽车的启动功能、电脑的关机行为
人们将对象的静态特征抽象为变量;动态特征抽象为行为,称为方法。
(3) 类
将具有相同属性和相同行为的一组对象称为类。 模具 实例
类是一个抽象的概念,要利用类来解决问题,必须要使用类去创建一个类的实例对象,然后使用类的实例对象去访问类的属性和方法去实现程序的功能。
例如:就如同“汽车”本身是一个抽象的概念,只用使用了该类中的一辆具体的汽车,才能访问汽车的属性和方法
(4)面向过程与面向对象的区别
①面向过程编程
面向过程编程是一种以事件为中心的编程思想,分析解决问题的步骤,然后使用函数或语句块把这些步骤一步一步实现,使用的时候一个一个一次调用就可以了。使用面向过程思想编写的代码,相对条理更清晰,更易读。
但是随着程序的增加,系统的膨胀,过程变得越来越复杂,变的不容易维护,一旦过程需要调整,修改十分麻烦,甚至很多代码都要重写
②面向对象编程
是一种以事物为中心的编程思想,把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是分析在解决问题的步骤中事物的行为。面向对象强调的是将问题对象化,因为问题的解决都是由对象参与,而且这种编程思想更贴近现实。
使用面向对象思想编写的代码,将数据和功能都封装在对象中,即使后续需要调整,只需要修改特定的对象,代码更易维护。
二、面向对象编程最重要的概念——类(class)和对象(object)
(1)类的简介
类是一种抽象的类型,对象是这种类型的实例
一个类可以有属于它的函数,被称为类的“方法”
一个类/对象可以有属于它的变量,被称为类/对象的“域”,域根据所属不同,又分别被称为“类变量”和“实例变量”
方法和域合称为类的属性
类就是一个容器
(2)创建类
-class语句后跟类名,缩进语句块表示类的内部
-在python中习惯在定义类时,将首字符大写,用于区分类名和函数名、变量名
class Employee: 雇员类 类型
empCount= 0 员工人数 #类变量
def __init__(self,myName, mySalary): # __init__()方法里边定义的 构造函数 方法
self.name = myName self.变量 属性
self.salary = mySalary
Employee.empCount += 1
defdisplayCount(self): #类的方法 显示员工人数的方法
print("Total Employee %d" %Employee.empCount)
defdisplayEmployee(self): #类的方法 显示当前员工的信息
print(“Name : ”, self.name, “, Salary: ”,self.salary)
(3)类的方法
①类的方法和普通函数区别:
类方法必须有一个额外的第一个参数名称self,但是在调用这个方法的时候,不需要为这个参数赋值,python会提供这个值,这个特别的参数指向对象本身,按照惯例它的名字是self,所以方法至少有一个参数self.
②self变量有什么用?如何给self变量赋值?
例子:假设有一个类 MyClass 模型 和 一个类的对象 MyObject(),当调用对象的方法MyObject.method(arg1,arg2)时,会由python自动转为 MyClass.method(MyObject,arg1,arg2)
③__init__方法
__init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法。__init__个对象被建立时,马上运行,而不是像其他类方法一样,方法在类的里面定义,手动调用。
可以通过对个这个方法传递参数来初始化对象。
注意:这个方法的名称开始和结尾都是双下划线
(4)创建对象
AAA = Employee("Zara", 2000)
(5)访问方法和属性
使用点运算符来访问对象的方法,而类变量使用类名来访问。
AAA.displayEmployee()
Employee.empCount = 10
三、变量
(1)类的变量
-由一个类的所有对象共享使用,所以当某个对象对类的变量做了改动,这个改动会反映到所有其他的对象上
-对象的变量由类的每个对象拥有,即对象的变量不是共享的
(2)定义私有变量
如果想要定义私有变量,即只能在类内部使用,不能再类外使用的变量,只需要在变量名前加双下划线
class people:
__aa =0 #私有变量在外部无法调用
def __init__(self,ename ='admin'):
self.name = ename
bb = people()
print(bb.__aa)
四、继承
面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制,继承可以理解为类型和子类型之间的关系,被继承的类称为基本类或超类,继承后的类被称为导出类或子类,子类能够继承超类的属性,即方法和域,通过这种继承机制,相同的属性就不需要重复编写,因此很好的实现了代码重用
在python中继承是通过在定义子类时,将超类的名称作为一个元组跟在子类名称后来表示。子类在继承过程中,可以新增独有的属性。如果子类与父类有相同的方法,会首先调用子类的方法。如果子类继承多个父类,且父类中函数方法相同,则会首先调用排在前面的父类方法。
class animal:
def __init__(self):
print('动物')
def eat(self):
print('吃')
class dog(animal): #定义dog类继承animal为父类
def __init__(self):
print('狗')
taidi = dog()
print(taidi.eat()) #调用父类里面的函数方法
通过子类继承超类,能够提高代码的重用性,同时还具备另外一个优点:如果超类发生变更,它能自动的反映到子类中
网友评论