200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > python 面向对象编程简称_Python基础-面向对象编程

python 面向对象编程简称_Python基础-面向对象编程

时间:2018-11-27 19:58:10

相关推荐

python 面向对象编程简称_Python基础-面向对象编程

简介

三中编程范式

面向过程编程

函数式编程

面向对象编程

面向对象和面向过程对比

面向过程

优点:

性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。

缺点:

没有面向对象易维护、易复用、易扩展

面向对象

优点:

易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护 -缺点:

性能比面向过程低

定义

类(Class)

用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

函数属性

即函数,在面向对象里统称为方法

数据属性

即变量,类变量或者实例变量用于处理类及其实例对象的相关的数据。

方法重写

如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

实例变量

定义在方法中的变量,只作用于当前实例的类。

封装

描述了对数据/信息进行隐藏的观念,它对数据属性提供接口和访问函数。

继承

即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。

实例化

创建一个类的实例,类的具体对象。

方法

类中定义的函数。

对象

通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

示例

声明类示例

class 类名(可选参数):

["注释"]

类体

数据&函数属性调用

class Text:

'''这是一个测试的类!'''

a = '测试'

def test():

print("这是一个测试函数(方法)!")

print(Text.a)

Text.test()

print(dir(Text)) #查看属性名称

print(Text.__dict__) #查看类属性的字典

测试

这是一个测试函数(方法)!

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'a', 'test']

{'__module__': '__main__', '__doc__': '这是一个测试的类!', 'a': '测试', 'test': , '__dict__': , '__weakref__': }

初始化函数

class Text:

'''这是一个测试的初始化函数!'''

def __init__(self,name,age,gender):

self.a = name

self.b = age

self.c = gender

v = Text("小明","18岁","男") #实例化生成的对象

print(v.__dict__) #生成对应的字典

print(v.a,v.b,v.c) #字典取值

封装

==即把代码隐藏起来,并非真正隐藏,而是一种使用接口调用“隐藏”类的约定==

隐藏调用,_开头的函数

class Test:

_num = "this is test!!!"

P = Test()

print(P._num)

隐藏调用,__开头的函数

class Test:

__num = "this is test!!!"

P = Test()

print(P._Test__num)

增删改查

==注:类底层以字典形式记录保存数据,切勿以字典形式修改数据==

数据属性增删改查

# -*- coding:utf8 -*-

class Obj:

mold='动物'

def __init__(self,name):

self.name = name

def play_ball(self,ball):

print('%s是一个%s' %(self.name,ball))

print(Obj.mold) #查看

Obj.mold = '植物' #修改

print(Obj.mold) #显示修改后内容

Obj.aquatic = "水产" #增加

print(Obj.aquatic) #显示增加后的内容

del Obj.aquatic #删除

动物

植物

水产

函数属性增删改查

# -*- coding:utf8 -*-

class Obj:

mold='动物'

def __init__(self,name):

self.name = name

def play_ball(self,ball):

print('%s是一个%s' %(self.name,ball))

def test():

print("This is test !!!")

def test2():

print("My test2 !!!")

Obj.add_test =test #新增

print(Obj.__dict__) #确认是否加入类

Obj.add_test() #查看

Obj.play_ball = test2 #修改

Obj.play_ball() #修改后查看确认

del Obj.add_test #删除

{'__module__': '__main__', 'mold': '动物', '__init__': , 'play_ball': , '__dict__': , '__weakref__': , '__doc__': None, 'add_test': }

This is test !!!

My test2 !!!

实例属性增删改查

# -*- coding:utf8 -*-

class Obj:

mold='动物'

def __init__(self,name):

self.name = name

def play_ball(self,ball):

print('%s是一个%s' %(self.name,ball))

def test():

print("This is test !!!")

def test2():

print("My test2 !!!")

P = Obj('小猫') #生成实例

P.play_ball('钓鱼') #执行查看

P.address = '河边' #实例增加数据属性

print(P.__dict__) #查看实例增加的数据属性

print(P.address)

P.test = test #实例增加函数属性

print(P.__dict__) #查看示例增加的函数属性

print(P.test)

P.test() #执行测试

小猫是一个钓鱼

{'name': '小猫', 'address': '河边'}

河边

{'name': '小猫', 'address': '河边', 'test': }

This is test !!!

特殊类属性

名称

释义

Class.__name__

类的名字

Class.__doc__

类的文档(声明注释内容)

Class.__base__

类的第一个父类

Class.__bases__

类的所有弗雷构成的元组

Class.__dict__

类的属性

Class.__module__

类定义所在的模块

Class.__class__

示例对应的类

面向对象设计

数据类型余动作的结合

# -*- coding:utf8 -*-

def production(name,addr,type): #函数定义的类型

def eat(obj): #函数定义的动作1

print('在%s有一个%s的%s' %(obj['addr'],obj['type'],obj['name'])) #输出项目内容,以字典形式传值,接受项也需要是字典

def play(obj): #函数定义的动作2

print('%s正在%s%s' %(obj['name'],obj['addr'],obj['type'])) #输出项目内容,以字典形式传值,接受项也需要是字典

def init(name,addr,type): #初始化函数把动作和类型放置一起

obj_dic = { #定义的包含动作和类型的字典

'name':name,

'addr':addr,

'type':type,

'eat':eat,

'play':play

}

return obj_dic #返回动作和类型的字典

return init(name,addr,type) #返回动作和类型的对象

s1 = production('小猫','河边','钓鱼') #生产测试

print(s1) #生产类型,输出包含动作和类型的的项目字典

s1['play'](s1) #总体执行,包含动作和类型,嵌套函数以字典传值所以函数参数为原函数执行的字典结果

{'name': '小猫', 'addr': '河边', 'type': '钓鱼', 'eat': .eat at 0x0000024E1B3C41E0>, 'play': .play at 0x0000024E1B3C42F0>}

小猫正在河边钓鱼

面向对象编程

面向对象编程独有语法去实现面向对象设计

# -*- coding:utf8 -*-

class Test: #定义类的类型

def eat(obj): #函数定义的动作1

print('在%s有一个%s的%s' %(s1.b,s1.c,s1.a)) #输出项目内容,从初始化函数中调用

def play(obj): #函数定义的动作2

print('%s正在%s%s' %(s1.a,s1.b,s1.c)) #输出项目内容,从初始化函数中调用

def __init__(self,name,addr,type): #初始化函数

self.a = name

self.b = addr

self.c = type

s1 = Test('小猫','河边','钓鱼') #生产测试

print(s1) #生产类型,输出实例化对象

s1.play() #总体执行,包含动作和类型

小猫正在河边钓鱼

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。