zoukankan      html  css  js  c++  java
  • 对象

    1) 面向对象的介绍

    2) 特性 (封装,继承,多态)

    3) 语法(语法、方法、构造函数、析构函数)

      析构函数:在实例释放、销毁的时候执行的,通常是一些守卫工作,关闭等等 def __del__(self)

    4) 私有方法、私有属性  ##加两个__

    5) 类变量、实例变量

     

    继承

    #py2, 经典类按深度优先来继承,新式类按广度优先来继承

    #py3,经典类和新式类都是按照统一广度优先来继承的

    反射

    通过字符串映射或者修改程序运行时的状态、属性、方法,有4个方法

    1) getattr

    2) hasattr(classname, function_name)

    3) setattr  - 动态的将一个外部方法传到类里面

    4) delattr

    异常

      try:

        code  

      except (Error1, Error2)as e:

        print(e)

    class Role(object):
        abc = "abc This is class parameter!"  #类变量
        def __init__(self, name, role, weapon, life_value=100, money=15000):
            self.name = name #实例变量(静态属性)的作用域在实例本身
            self.role = role
            self.weapon = weapon
            self.__life_value = life_value
            self.money = money
    
        def shot(self): #类的方法
            print(self.name+"   shooting...")
    
        def got_shot(self):
            print(self.name+"   ah...,I got shot...")
    
        def buy_gun(self, gun_name):
            print("just bought %s" % gun_name)
            self.weapon = gun_name
    
        def show_status(self):
            print("Name: %s, Weapon:%s, Life Value = %s"%(self.name,
                                                           self.weapon,
                                                           self.__life_value))
    
        def __del__(self):
            print("release the class role")
    
    class police(Role):
        def __init__(self,name,weapon,life_value, level): ###必须先把父类的参数都写入!!!
            Role.__init__(self,name,weapon,life_value) ###调用父类的方法,将参数传递进去!!!
            self.level = level
            print("Police initial ... level %s"%self.level)
    
        def show_police(self):
            print("I am a policeman in POLICE CLASS! Name: %s, Weapon: %s, Level:%s"%(self.name,self.weapon,self.level))
    
    class shoot(Role):
        def kill(self,obj):
            print("%s is killing %s"%(self.name, obj.name))
    
    r1 = Role('Alex', 'police', 'AK47') #生成一个角色,实例化(初始化一个类,造了一个对象)
    r2 = Role('Jack', 'terrorist', 'B22')  #生成一个角色
    
    r1.name = "ddw"  #可以改class方法中的属性的值
    r1.bullet_prove = True #可以为class中的方法新加一个属性
    del r1.bullet_prove #可以在实例中删除一个变量
    
    r1.shot()
    r2.got_shot()
    
    print(Role.abc +"直接打印class变量!!!")
    
    print(r1.abc,r1.weapon)
    r1.buy_gun("AAA123")
    print(r1.weapon)
    r1.show_status()
    
    p1 = police("ABC","A_weapon","AK**",'3')
    p1.show_police()
    
    r3 = shoot("Louie","police","RJ233")
    #r3 = shoot(r1)
    r3.kill(r2)
    
    
    del r1
    del r2
    #print(r1.abc,r1.weapon)
    View Code
  • 相关阅读:
    Hive on Spark
    Mongodb添加副本及修改优先级
    RabbitMQ与Spring集成
    最简单的图文教程,几步完成Git的公私钥配置
    Idea Ant 打开发包
    Spring Web 项目Junit测试报错问题
    阿里云maven仓库地址,速度提升100倍
    Spring boot 学习
    JAVA开发常用工具包
    从无到有搭建SSM框架
  • 原文地址:https://www.cnblogs.com/ywyin/p/9026386.html
Copyright © 2011-2022 走看看