码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象入门(封装)

时间:2017-05-31 17:31:14      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:方式   属性   输出   div   参数   模板   调用   过程   获取   

编程的方式:

·面向过程:根据业务逻辑从上到下垒代码

·函数式:将某功能代码封装到函数中,通过调用函数来简洁代码

·面向对象:对函数进行分类和封装,让开发变得“更好、更快、更强”

 

 

面向对象编程(object oriented programming)OOP

这种编程方式的落地需要使用"类"和"对象"来实现,所以面向对象编程其实就是对"类"和"对象"的使用。

 

类(class)

 "类"就是一个模板,模板里可以包含多个函数,"类"中的函数叫做"方法"

 

对象(object)

"对象"是根据模板创建的实例,通过实例对象可以执行类中的"方法"

 

面向对象的三大特征:

1、封装

2、继承

3、多态

 

一、封装

 将内容封装到某个地方,以后再去调用被封装在某处的内容

所以,在使用面向对象的封装特性时,需要注意两点

·将内容封装到某处

·从某处调用被封装的内容

 

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

 1 class Foo:
 2 
 3     def __init__(self,name,age):
 4 
 5         self.name = name
 6 
 7         self.age = age
 8 
 9  
10 
11 # 根据类Foo创建对象
12 
13  
14 
15 obj1 = Foo("Alben",18)
16 
17  
18 
19 obj2 = Foo("Nichole",30)

 

 

self 是一个形参,

·当执行obj1 = Foo("Alben" , 18)时,self = obj1

·当执行obj2 = Foo("Nichole" , 30)时,self = obj2

 

所以,内容被封装到了对象obj1和obj2中,每个对象中都有name和age属性,在内存中的对应关系:

 

 

 

第二步:从某处调用被封装的内容

调用被封装的内容时,有两种情况:

·通过对象直接调用

·通过self间接调用

 

通过对象直接调用:

print(obj1.name)

print(obj2.name)

 

通过self间接调用:

通常,调用"类"中封装的"方法"的时候,通常使用self间接调用——

 1 class Foo:
 2 
 3     def __init__(self,name,age):
 4 
 5         self.name = name
 6 
 7         self.age = age
 8 
 9  
10 
11     def detail(self):
12 
13         print(self.name)
14 
15         print(self.age)
16 
17  
18 
19 obj1 = Foo("Alben",18)
20 
21  
22 
23 obj1.detail()
24 
25  

 

#在执行的时候,Python会将obj传递给参数self,即obj1.detail(obj1)。

 

综上所述,对于面向对象的封装来说,其实就是使用构造方法将内容封装到对象中,然后通过对象直接或self间接的方式获取封装的内容。

 

 

练习:

在终端输出一下内容

王顺,10岁看黄片

王顺,10岁撸管

王顺,10岁逛窑子

 

熊鸡鸡,10岁看黄片

熊鸡鸡,10岁撸管

熊鸡鸡,10岁逛窑子

 

函数式:

 1 def kanhuangpian(name,age):
 2 
 3     print(name +,  + age + "岁看黄片")
 4 
 5  
 6 
 7 def luguan(name,age):
 8 
 9     print(name + ,  + age + "岁撸管")
10 
11  
12 
13 def guangyaozi(name,age):
14 
15     print(name + ,  + age + "岁逛窑子")
16 
17  
18 
19  
20 
21 name1 = "王顺"
22 
23 name2 = "熊GG"
24 
25 age1 = str(10)
26 
27  
28 
29 kanhuangpian(name1,age1)
30 
31 luguan(name1,age1)
32 
33 guangyaozi(name1,age1)
34 
35  
36 
37 kanhuangpian(name2,age1)
38 
39 luguan(name2,age1)
40 
41 guangyaozi(name2,age1)

 

 

OOP式:

 1 class People:
 2 
 3     def __init__(self,name,age):
 4 
 5         self.name = name
 6 
 7         self.age = age
 8 
 9  
10 
11     def huangpian(self):
12 
13         print("%s , %d岁看黄片!" % (self.name,self.age))
14 
15  
16 
17     def luguan(self):
18 
19         print("%s , %d岁撸管!" % (self.name,self.age))
20 
21  
22 
23     def yaozi(self):
24 
25         print("%s , %d岁逛窑子!" % (self.name,self.age))
26 
27  
28 
29 obj1 = People("王顺",10)
30 
31 obj2 = People("熊GG",10)
32 
33  
34 
35 obj1.huangpian()
36 
37 obj1.luguan()
38 
39 obj1.yaozi()
40 
41  
42 
43 obj2.huangpian()
44 
45 obj2.luguan()
46 
47 obj2.yaozi()

 

面向对象入门(封装)

标签:方式   属性   输出   div   参数   模板   调用   过程   获取   

原文地址:http://www.cnblogs.com/alben-cisco/p/6924988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!