欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

面向对象编程简介

程序员文章站 2023-12-26 17:26:09
...

面向对象的思想

首相大家对这个名词应该很熟悉,面向对象编程。大家在大学时的计算机老师经常说的东西。在学C语言的时候,老师说这个是面向程序,在学java时,老师说这个是面向对象编程,还有一个面向函数编程,那到底啥是面向对象编程?

首先请大家思考一下,我们人看到一个杯子,第一印象是什么?
对头 颜色,大小,材质,可以用来喝水,还是装饰品。好的,同学们,这就是面向对象的思想,下课(手动滑稽)。面向对象,这个是通过人的思维方式去控制电脑,将我们感兴趣的对象(一切皆是对象,包括你的对象)抽象化,提取我们感兴趣的特性以及其作用,转化成属性和方法并通过代码实现。也许这么说会比较空,那我举个例子吧。在C语言中,我们处理一个事情,去完成一个程序,考虑的应该是程序的开头怎么写,然后这么操作,重中之重是数据类型和算法。而对于java而言,要确定完成任务需要的对象,并将其丰满以及想关联最后实现,对于这种思想,算法和数据结构也很重要,但并没有C中那么重要。
那python是啥?个人觉得面向对象,面向程序,面向函数都可以,但面向对象会更实用 方便一些。
那如何实现面向对象?那就是

前期知识

大家在开始类这一部分的学习前,需要有一些其他的铺垫:

import,from,as,*
4个进行包导入的关键字,操作如下

Import X              #导入X包 
Form X import c       #将X包中的C直接导入
from x import c as a  #给c取别名
From x import *       #将全部导入

注:包查询的顺序为 程序主目录 环境变量 标准库 扩展库
注意自己定义函数和包时,不要和之前系统自带的相同,以免现覆盖

程序入口 if name==’’main’’:
进行较大的程序开发,包括多个脚本共同组成的程序时,这个代表程序的开始部分

面向对象分析的一般思路

1.对象特征分析
2.写了类描述对象模板
3.实例化,模拟过程

对于较好公司,一般这3步都有3层人完成,但对于一些刚起步的公司,那,您都要会。那我们说了那么长时间的对象
:在python中我们如何创建对象?
: 实例化类
:类是什么
:对象的模板
:那怎么创建类?怎么实例化类?

一般定义格式

class Pensor():                              #class定义类名
	def use():                               #定义方法名
		print("使用方法")                     #定义方法体

注意,在python中,类实例化的对象的元素值可以直接修改,属性也可以直接添加

init

class Pensor():                       #类名
   def __init__(self,name,age,sex):   # init方法,类创建时使用的方法,定义类的属性
   self.name=name                     # self 指实现类的实例,这个自己顿悟吧
   self.sex=sex

这个是类创建的基本方法,class后面连接类名,使用__init__定义起始类创建时的属性等的确定方法,注意,在类中存在的__X__的方法表示其为系统已经定义的方法,可通过修改这些方法完成一些意想不到的操作。

def repr(self):

一般让程序输出对象时输出的是系统储存对象的位置

a=Student("小明",'21',"男",grades)
print(a)

E:\Anaconda3\python.exe "C:/Users/LSY123/Desktop/text/python 类/main.py"
<__main__.Student object at 0x0000022827953A20>

但是在类的定义中,存在一个方法,可以修改其print的值

class Student(Pensor):
    def __init__(self,name,age,sex,grades):
        Pensor.__init__(self,name,age,sex)
        self.grades=grades
    def __repr__(self):
        return self.name
grades=[98,90,97,96,90]
a=Student("小明",'21',"男",grades)
print(a)

E:\Anaconda3\python.exe "C:/Users/LSY123/Desktop/text/python 类/main.py"
小明

同时,有时需要对类中某些属性进行操作得到需要的数据,这些数据同时不允许用户进行修改,这时可以用到

@property

class Student(Pensor):
    def __init__(self,name,age,sex,grades):
        Pensor.__init__(self,name,age,sex)
        self.grades=grades
    @property
    def avg_grade(self):
        return sum(self.grades)/5

    def __repr__(self):
        return self.name

使用这个后,可以使avg_grade变成类的一个属性,并且不允许修改,以保证数据的完整性

类的静态方法

class Pensor():
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex
    def static():
        print("这是静态方法")
a=Pensor.static()

这里的静态方法的概念和C语言的相同,但是这种方法限制了静态方法的使用,只能使用类名称使用方法。

继承

class Employee:
    def __init__(self,department,name,birthday,salary):
        self.departme = department
        self.name = name
        self.birthday = birthday
        self.salary = salary
    def working(self):
        print("员工{}正在工作".format(self.name))

class Programer(Employee):
    def __init__(self,department,name,birthday,salary,specialty,project):
        Employee.__init__(department,name,birthday,salary)               #基类进行初始,获取基类全部的方法
        self.specialty=specialty
        self.project=project
    def working(self):
        print("程序员 :{}在开发项目".format(self.name))

代码如上图,和java的继承方法类似,,在继承类的init方法中使用被继承类的init方法吗,获取被继承的方法和属性,并可完成重写

相关标签: 基础 python

上一篇:

下一篇: