zoukankan      html  css  js  c++  java
  • PYDay14:反射、面向对象基础-封装、集成、多态

    1、反射

    通过字符串的形式,导入模块
    再通过字符串的形式,去模块中寻找指定的函数并执行
    eg:__import__(模块)

    更加字符串的形式去对象(某个模块)中操作其成员

    常用方法: 

    getattr()

    hasattr()

    setattr()

    delattr()

    扩展:

    r = __import__('www.iclinux.com',fromlist=True)

    反射示例:

    使用反射,无需依照函数的数量来写判断了

    2、面向对象基础:

    C# Java 只能使用面向对象编程

    Pyhon Ruby:即可函数编程又可面向对象编程

    面向对象编程不是所有的情况都适用

    • 面向过程:根据业务逻辑从上到下写垒代码
    • 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
    • 面向对象:对函数进行分类和封装,让开发“更快更好更强...
    class  iclinux:
        def fetch(self,backend):
            pass
        def add_record(self,backend,record)
            pass
    
    obj = iclinux()
    obj.fetch('xxx')
    obj.add_record('xxx',yyy)

    class:关键字,表示类

    创建对象,类名称后冒号即可

    类中函数第一个参数必须是self

    类中函数叫做方法

    __init__:对象中称为构造方法,也可称为初始化

    __del__:解释器销毁对象时自动调用,对象中称为析构方法

    self为形式参数,python内部传递

    obj=》self  ;;;‘xxx’==》backend

    4.1封装

    使用封装,参数制药传递异常,后面都可以使用

    使用场景:当统一类型的方法具有相同参数时,直接封装到对象即可
    使用场景:把类当作模板,创建多个对象(对象内封装的数据不一样)

    4.2继承:

    父类也叫基类,子类也叫派生类

    其他语音如java、c#只能集成一个父类,python的类可同事集成多个类,继承顺序和优先级为:自己》左》左父》右》右父

     4.3多态

    Pyhon不支持Java和C#这一类强类型语言中多态的写法,但是原生多态,其Python崇尚“鸭子类型”。

    class F1:
        pass
    
    
    class S1(F1):
    
        def show(self):
            print 'S1.show'
    
    
    class S2(F1):
    
        def show(self):
            print 'S2.show'
    
    def Func(obj):
        print obj.show()
    
    s1_obj = S1()
    Func(s1_obj) 
    
    s2_obj = S2()
    Func(s2_obj)
    eg

    5、接口

    通常以I开头,只写方法,不写内容。接口上的方法,类里面都要有实现

    接口按类型可分为代码级别的端口和业务级别的端口

    6、练习

    游戏人生程序

    1、创建三个游戏人物,分别是:

    • 苍井井,女,18,初始战斗力1000
    • 东尼木木,男,20,初始战斗力1800
    • 波多多,女,19,初始战斗力2500

    2、游戏场景,分别:

    • 草丛战斗,消耗200战斗力
    • 自我修炼,增长100战斗力
    • 多人游戏,消耗500战斗力
    # -*- coding:utf-8 -*-
    
    # #####################  定义实现功能的类  #####################
    
    class Person:
    
        def __init__(self, na, gen, age, fig):
            self.name = na
            self.gender = gen
            self.age = age
            self.fight =fig
    
        def grassland(self):
            """注释:草丛战斗,消耗200战斗力"""
    
            self.fight = self.fight - 200
    
        def practice(self):
            """注释:自我修炼,增长100战斗力"""
            
            self.fight = self.fight + 200
    
        def incest(self):
            """注释:多人游戏,消耗500战斗力"""
            
            self.fight = self.fight - 500
    
        def detail(self):
            """注释:当前对象的详细情况"""
    
            temp = "姓名:%s ; 性别:%s ; 年龄:%s ; 战斗力:%s"  % (self.name, self.gender, self.age, self.fight)
            print temp
    
            
    # #####################  开始游戏  #####################
    
    cang = Person('苍井井', '', 18, 1000)    # 创建苍井井角色
    dong = Person('东尼木木', '', 20, 1800)  # 创建东尼木木角色
    bo = Person('波多多', '', 19, 2500)      # 创建波多多角色
    
    cang.incest() #苍井空参加一次多人游戏
    dong.practice()#东尼木木自我修炼了一次
    bo.grassland() #波多多参加一次草丛战斗
    
    
    #输出当前所有人的详细情况
    cang.detail()
    dong.detail()
    bo.detail()
    
    
    cang.incest() #苍井空又参加一次多人游戏
    dong.incest() #东尼木木也参加了一个多人游戏
    bo.practice() #波多多自我修炼了一次
    
    #输出当前所有人的详细情况
    cang.detail()
    dong.detail()
    bo.detail()
    
    游戏人生
    View Code
  • 相关阅读:
    js实现element中可清空的输入框(1)
    vue中v-model的学习
    Oracle触发器和MySQL触发器的简单应用
    Java中的多线程你只要看这一篇就够了()
    HTML 随笔记之 刷新页面
    HTML CSS 随笔记之 cursor
    float到底是干什么的?
    Spring Boot 事物的快速应用
    java web 中文乱码
    LVM 创建实例
  • 原文地址:https://www.cnblogs.com/workherd/p/7215740.html
Copyright © 2011-2022 走看看