一、面向对象思想分析
1.思想:让计算机围绕着人的思维去执行,以符合人的思维习惯分析问题,解决问题
2.对象的定义:万物皆对象,对对象的分析类似于分析对象的特征、行为及属性。
例如:(1)人摔坏了杯子,如果杯子作为对象,特征有:材质、大小、价格、形状及生产商等,杯子的行为:运动
(2)人在公园跑步,如果人作为对象,特征有:升高,体重,性别,年龄、工作等,人的行为:跑步
二、面向对象编程的步骤
(1)分析对象的特征与行为(可以是针对对象的具体操作),若有多个对像需关注对象之间的关系(如聚合、复合、依赖等)
(2)使用类定义对象代码模板
定义方式: class 对象名(对象名的首字母采用大写的方式)
(3)实例化对象
示例1:图书管理系统
class Book: #定义一个名为Book的类
# 相当于初始化函数、()中的为形参,self必不可少,后面的形参面熟对象的特征
def __init__(self,title,price,author,publisher):
self.title = title #获取存储在形参title中的值
self.price = price
self.author = author
self.publisher = publisher
def print_info(self): #类中的函数,也称作方法
print("标题:{}".format(self.title))
print("标题:{}".format(self.price))
book1 = Book('python',39,'Peter','www') #创建实例
book1.print_info() #调用类中的方法(输出方法print_nfo中的信息)
print("This book name is :{}".format(book1.title.title()))#只输出book1的title
说明:可创建多个实例,调用方法参照示例
book2 = Book('c++',58,'Tom','www')
三、导入类
Python可以将类存储在模块中,然后在主程序导入所需的模块
导入方法1:import----导入模块的所有类
eg:import math
导入方法2:from 模块名 import 类----导入一个模块中的某一个类
eg:from modals import test
导入方法3 :from 模块名 import 类 as 新类名----导入一个模块中的某一个类,并对该类进行重命名
eg:from modals import test as M_test
import math
class Circle:
def __init__(self,radius):
self.raduis = radius
def get_area(self):
return math.pi * self.raduis ** 2
if __name__ == '__main__':
C1 = Circle(4.0)
print("半径为4时圆的面积为:{}".format(C1.get_area()))
C2 = Circle(10.3)
print("半径为10.3时圆的面积为:{}".format(C2.get_area()))
四、类的继承----将共性拿出来,单独建立一个类
import datetime
class Employee:
def __init__(self,name,age,depart,salary):
self.name = name
self.age = age
self.depart = depart
self.salary = salary
def _repr_(self): #定义在交互式提示符下的打印方式
return '<员工:{}>'.format(self.name)
def working(self):
print('员工:{},在工作'.format(self.name()))
class Programmer(Employee): #表明programmer类(子类)继承自employee类(父类)
def __init__(self,name,age,depart,salary,special,project):
super().__init__(name,age,depart,salary)#针对单个类调用employee类中的__init__函数
self.special = special
self.project = project
def working(self):
print("程序员:{},在研发项目:{}".format(self.name,self.project))
if __name__ == '__main__':
P1 = Programmer('Peter',35,'技术支持',18000,'wu','Class')
print(P1.working())