首页 > 编程 > Python > 正文

python学习之面向对象【入门初级篇】

2020-02-23 04:18:31
字体:
来源:转载
供稿:网友

前言

最近在学习Python的面向对象编程,以前是没有接触过其它的面向对象编程的语言,因此学习这一部分是相当带劲的,这里也总结一下。

概述

python支持多种编程范式:面向过程、面向对象、面向切面(装饰器部分)等。 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...”

OOP思想

面向对象的基本哲学:世界由具有各自运动规律和内部状态的对象组成,对象之间相互作用和通讯构成了世界。 唯一性,世界没有两片相同的树叶,同样的没有相同的对象。 分类性,分类是对现实世界的抽象。 三大特性:封装、继承和多态

面向对象的三大特性:

一、封装

封装,对具体对象的一种抽象,即将某些部分隐藏起来,在程序外部看不到,即无法调用。

私有化:将类或函数中的某些属性限制在某个区域之内,外部无法调用。

Python中私有化的方法也比较简单,就是在准备私有化的属性(包括方法、数据)名字前面加双下划线。

例如:

class ProtectMe(object):  def __init__(self): self.me = "qiwsir" self.__name = "kivi"  def __python(self): print("I love Python.")   def code(self): print9"Which language do you like?") self.__python() if __name__ == "__main__": p = ProtectMe() print(p.me) print(p.__name) #运行结果qiwsirTraceback (most recent call last): File "21102.py", line 21, in <module> print p.__nameAttributeError: 'ProtectMe' object has no attribute '__name' 

说明:__name属性隐藏了,无法调用。

调用私有属性,可以使用property函数

class ProtectMe(object):  def __init__(self): self.me = "qiwsir" self.__name = "kivi"  @property def name(self): return self.__name if __name__ == "__main__": p = ProtectMe() print(p.name)#运行结果 kivi 

所以,在使用面向对象的封装特性时,需要:

将内容封装到某处 从某处调用被封装的内容

第一步:将内容封装到某处

 self 是一个形式参数,当执行 obj1 = Foo('wupeiqi', 18 ) 时,self 等于 obj1

                              当执行 obj2 = Foo('alex', 78 ) 时,self 等于 obj2

所以,内容其实被封装到了对象 obj1 和 obj2 中,每个对象中都有 name 和 age 属性,在内存里类似于下图来保存。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表