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

    面向对象编程(OOP):

    • 面向过程:根据业务逻辑从上到下写垒代码
    • 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
    • 面向对象:对函数进行分类和封装,让开发“更快更好更强...”

    面向对象编程就是对类和对象的应用。类就是一个模板,模板里可以包含多个函数,函数里实现一些功能。对象则是根据模板创建的实例,实例可以执行模板里定义好的函数。

    eg:

    class hello:
        
        def say(self):
            print 'hello'
    
        def people(self,name):
            print 'i am %s' % name
    
    obj = hello()
    obj.say()
    obj.people('ahaii')

    面向对象编程的三大特性:

    一、封装

    将内容封装在某个地方,以便以后调用。

    1、内容封装

    class hello:
    
        def __init__(self,name,age):
            self.name = name
            self.age = age
    
    obj1 = hello('ahaii','22')#自动执行hello类中的__init__方法
    obj2 = hello('tom','20')#自动执行hello类中的__init__方法

    '__init__(self)'成为构造方法,在创建对象时自动执行。即当执行'obj1 = hello('ahaii','22')'时,就会调用执行__init__()方法。

    self为形式参数,当执行obj1 = hello('ahaii','22')时,self=obj1,执行obj2 = hello('tom','20')时,self=obj2。

    obj1和obj2两句实际上就是将‘ahaii,22’和‘tom,20’分别封装在了obj1和obj2中。

    2、内容调用

    两种调用方式:

    1)通过实例直接调用

    eg:

    class hello:
    
        def __init__(self,name,age):
            self.name = name
            self.age = age
    
    obj1 = hello('ahaii','22')
    print obj1.name,obj1.age#调用obj1实例的name和age属性
    
    obj2 = hello('tom','20')
    print obj2.name,obj2.age

    2)通过self间接调用

    eg:

    class hello:
    
        def __init__(self,name,age):
            self.name = name
            self.age = age
    
        def people(self):
            print self.name
            print self.age
    
    people1 = hello('ahaii','22')
    people1.people()
    
    people2 = hello('tom','20')
    people2.people()

    Python默认会将people1传给self参数,即:people1.people(people1)。所以,此时方法内部的 self = people1,即:self.name 是 ahaii ;self.age 是 22

    封装就是使用构造函数将内容封装在对象中,然后通过对象或者self来取被封装的内容。

    二、继承

    子继承父的功能

    具体执行:

    class 父类:   
        def 父类的方法(self):
            pass
        
    class 子类(父类):
        pass
    
    obj = 子类
    obj.父类的方法()

    三、多态

    pass

  • 相关阅读:
    307. Range Sum Query
    OLI 课程 & Java入学考试的五道题
    745. Prefix and Suffix Search 查找最大index的单词
    38.Count and Say 报数
    721. Accounts Merge合并电子邮件账户
    265. Paint House II 房子涂色K种选择的版本
    【转】如何做人性化的代码审查?从高到低、用例子
    java之struts2之文件下载
    java之struts2之文件上传
    java之struts2之拦截器
  • 原文地址:https://www.cnblogs.com/ahaii/p/5266078.html
Copyright © 2011-2022 走看看