面向对象编程简介

面向对象的思想

首相大家对这个名词应该很熟悉,面向对象编程。大家在大学时的计算机老师经常说的东西。在学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方法吗,获取被继承的方法和属性,并可完成重写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值