天天看点

Python基础学习----面向对象基础

一、面向对象思想分析

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())