zoukankan      html  css  js  c++  java
  • 面向对象

      面先对象编程(Object Oriented Programming,OOP,面向对象程序设计),又称OOP。面向对象编程是一种编程思想,与之像对比的是面向过程编程。面向过程编程是对问题的流程化编程处理,就好比说把大象装进冰箱,第一步打开冰箱,第二部放进冰箱,第三步关上门。这是其中的过程按照流程一步步走,遇到选择就用if..else,whlie 等流程控制语句,使问题细化,一步步接近结果,直至完成。但是面向对象编程就把问题抽象化,抽象问题的属性,放在类中。就好比可乐是一个类,它就是抽象的,因为你找不到者类。可能读者会说,可口可乐不就是可乐吗?这是没毛病的。但是我要反问一句,可乐就是可口可乐吗?那百事可乐又算什么?那是因为所有品牌的可乐,所有国家的可乐都是可乐这个范畴。可乐是它们的统称,所有可乐类这个范畴下的都是可乐的一种,但是它们永远也不能替代整个可乐这大的类。这个可乐这个类的内容就是所有可乐的共同特性。这些共同特征就是抽象出来的。有了这些类,这些属性,添加到问题解决有帮助的属性。便可以随意调用这些属性来解决问题。

    # 创建可乐这个类
    class Kele:
        name = '可乐名'
        package = '包装'

      可乐这个类,不管什么品牌都有名字,都有包装。百事可乐和可口可乐,包装有易拉罐的,有玻璃瓶。

    class Cola:
        name = '可乐名'
        package = '包装'
    
    CocaCola = Cola()    # 类的实例化。又称对象
    CocaCola.name = 'Cocacola'
    CocaCola.package = '易拉罐'
    print(CocaCola.name, CocaCola.package)
    >>>Cocacola 易拉罐

      类中的__init__魔方法

    class CocaCola:
          formula = ['caffeine','sugar','water','soda']
          def __init__(self):
                for element in self.formula:
                    print('Coke has {}!'.format(element))
          def drink(self):
                print('Energy!')
    coke = CocaCola()

         __init__()魔方法神奇之处就在于如果你在类中定义了它,在创建实例的时候它能够帮你处理很多事情。比如新增一个实例,那么它会自动帮我们执行__init__中的内容。它的使用方法和普通函数一样,但是不能有任何返回值。

      对象的绑定。在类实例化之后默认都是绑定对象。

    class L:
        def __init__(self, name):
            self.name = name
    
        def say(self):
            print(f'I am {self.name}')
    meKing = L('meKing')
    meKing.say()     # 调用meking名字属性
    >>>I am meKing 

     类的绑定是另一种绑定方法。类绑定方法用@classmethod来装饰

    class L:
        name = '张三'
        def __init__(self, name):
            self.name = name
        @classmethod
        def say(self):
            print(f'I am {self.name}')    # 默认类自己熟悉
    meKing = L('meKing')
    meKing.say()   
    >>>I am 张三 

      非绑定方法:@staticmethod

    class L:
        name = '张三'
        def __init__(self, name):
            self.name = name
        @staticmethod    #非绑定方法
        def say(self='李四'):   #self只是和普通函数一样的一个形参。
            print(f'I am {self}')
    meKing = L('meKing')
    meKing.say() 
    >>>  I am 李四

      

  • 相关阅读:
    Vue实例的生命周期created和mounted的区别
    Vue实例的生命周期created和mounted的区别
    20172326『Java程序设计』课程结对编程练习_四则运算第二周阶段总结
    Coverage数据拓扑
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/huaiXin/p/11240390.html
Copyright © 2011-2022 走看看