内容简介:Python面向对象的编程
在上一章节中,看书自学python-socket编程里面发现很多问题,一个重点是不知道 python 的class是什么,总是在百度每一句代码是什么意思,发现好像问题挺大的,万一后面还出现了class怎么办,难道每一句百度???,果断百度“python面向对象编程”,以下是学习python面向对象编程的一些心得, 原文来自武沛齐 ,很多地方自己改了一下
大纲
1、创建类和对象
2、面向对象的三大特性
创建类和对象
面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。
类就是一个模板,模板里可以包含多个函数,函数里实现一些功能
对象则是根据模板创建的实例,通过实例对象可以执行类中的函数
从知乎上面看到这样一句话,不知道是对是错,反正我理解不了,感觉太高深
实例就是对象在内存中开辟了空间。
父母口中的女朋友(对象),怀里搂着的她(实例)。
”创建一个类:
# 创建类 class Foo:
#类中定义的函数叫方法 def Bar(self): #类中的函数第一个参数必须是self print("bar") def Hello(self, name): print("i am %s" % name) # 根据类Foo创建对象obj obj = Foo() # 相当于拿到类里面的所有方法(函数),当然,这是我自己得理解 # Foo().Bar() obj.Bar() # 执行Bar方法 obj.Hello("smelond") # 执行Hello方法
# 面向对象:【创建对象】【通过对象执行方法】
# 函数编程:【执行函数】
面向对象三大特性
一、封装
封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。
所以,在使用面向对象的封装特性时,需要:
- 将内容封装到某处
- 从某处调用被封装的内容
第一步:将内容封装到某处
# 创建类
class Foo:
def __init__(self, name, age): # 称为构造方法,根据类创建对象时自动执行
self.name = name
self.age = age
# 根据类Foo创建对象
# 自动执行Foo类的__init__方法
obj1 = Foo("wupeiqi", 18) # 将wupeiqi和16分别封装到(obj1、self)的name和age属性中
# 根据类Foo创建对象
# 自动执行Foo类的__init__方法
obj2 = Foo("smelond", 16) # 将smelond和16分别封装到(obj2、self)的name和age属性中
self 是一个形式参数,当执行 obj1 = Foo('wupeiqi', 18 ) 时,self 等于 obj1
当执行 obj2 = Foo('alex', 78 ) 时,self 等于 obj2
所以,内容其实被封装到了对象 obj1 和 obj2 中,每个对象中都有 name 和 age 属性,在内存里类似于下图来保存。
第二步:从某处调用被封装的内容
调用被封装的内容时,有两种情况:
- 通过对象直接调用
- 通过self间接调用
1、通过对象直接调用被封装的内容
调用方式:对象.属性名
通过上面的代码直接调用封装的内容 print(obj1.name) print(obj1.age) print(obj2.name) print(obj2.age) 输出 wupeiqi 18 smelond 16
2、通过self间接调用被封装的内容
# 通过self间接调用
class Foo:
def __init__(self, name, age):
self.name = name
self.age = age
def detail(self):
print(self.name)
print(self.age)
obj1 = Foo('wupeiqi', 18)
obj1.detail() # Python默认会将obj1传给self参数,即:obj1.detail(obj1),所以,此时方法内部的 self = obj1,即:self.name 是 wupeiqi ;self.age 是 18
obj2 = Foo('smelond', 16)
obj2.detail() # Python默认会将obj2传给self参数,即:obj2.detail(obj2),所以,此时方法内部的 self = obj2,即:self.name 是 smelond ; self.age 是 17
输出:
wupeiqi
18
smelond
16
综上所述,对于面向对象的封装来说,其实就是使用构造方法将内容封装到 对象 中,然后通过对象直接或者self间接获取被封装的内容。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 面向Python,面向对象(基础)
- 面向Python,面向对象(基础3)
- <<深入PHP面向对象、模式与实践>>读书笔记:面向对象设计和过程式编程
- 《JavaScript面向对象精要》之六:对象模式
- 《JavaScript面向对象精要》之三:理解对象
- 面向对象的程序设计之理解对象
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Design for Hackers
David Kadavy / Wiley / 2011-10-18 / USD 39.99
Discover the techniques behind beautiful design?by deconstructing designs to understand them The term ?hacker? has been redefined to consist of anyone who has an insatiable curiosity as to how thin......一起来看看 《Design for Hackers》 这本书的介绍吧!