• 对象


    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
  • 相关阅读:
    Django学习日记-06新url多对多表添加 编辑操作
    Django学习日记-05Ajax一对多添加 编辑操作
    Django学习日记-04Ajax单表操作编辑部分和js阻止
    Django学习日记-03单表-模态对话框的Ajax和新URL
    Django学习日记-02简单的模板渲染
    都2020年了,还问GET和POST的区别
    以面象对象的思想来操作SQL
    tcp-server--循环为多个客户端提供服务
    socket-udp
    第六周-第06章节-Python3.5-类变量的作用及析构函数
  • 原文地址:https://www.cnblogs.com/ywyin/p/9026386.html
Copyright © 2020-2023  润新知