zoukankan      html  css  js  c++  java
  • 面向对象入门(封装)

    编程的方式:

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

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

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

    面向对象编程(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()
  • 相关阅读:
    『Python』进程同步
    『Python』多进程
    『GoLang』协程与通道
    『GoLang』错误处理
    『码农翻身』语言的学习
    『GoLang』fmt包的使用
    异或运算符(^)、与运算符(&)、或运算符(|)、反运算符(~)、右移运算符(>>)、无符号右移运算符(>>>)
    HTML DOM focus() 方法
    JavaScript中的indexOf使用方法
    HTML 5 中的textarea标签
  • 原文地址:https://www.cnblogs.com/alben-cisco/p/6924988.html
Copyright © 2011-2022 走看看