zoukankan      html  css  js  c++  java
  • python之对象(实例)

    1.对象是关于类而实际存在的一个例子,即实例

    #类实例化得到g1这个实例

    class Garen:

        camp='Demacia'

        def __init__(self,nickname,aggressivity=58,life_value=455):

            self.nickname=nickname  #为自己的盖伦起个别名;

            self.aggressivity=aggressivity #英雄都有自己的攻击力;

            self.life_value=life_value #英雄都有自己的生命值;

        def attack(self,enemy):

            print("attack %s" % enemy)

    g1=Garen('草丛伦')

    1.1 对象的属性引用和绑定方法

    (1)对象(实例)只有一种作用:属性引用

    格式: 实例名.类的变量名

           实例名.绑定方法

           实例名.实例自己的变量名

    print(g1.nickname)

    print(g1.aggressivity)

    print(g1.life_value)

    输出结果为:

    草丛伦

    58

    455

    (2)对象的属性操作

    查看属性信息

    print(g1.nickname)

    输出结果:

    草丛伦

    修改属性信息

    g1.nickname="伦哥"

    print(g1.nickname)

    输出结果为:

    伦哥

    添加属性

    g1.sex="female"

    print(g1.sex)

    输出结果为:

    Female

    删除属性:

    del g1.sex

    print(g1.sex)

    输出结果为:

    AttributeError: 'Garen' object has no attribute 'sex' #报错

    (3)查看实例属性

    同样是dir和内置__dict__两种方式

    特殊实例属性

    __class__

    __dict__

    (4)对象(实例)的绑定方法

    对象本身只有数据属性,但是python的class机制会将类的函数绑定到对象上,称为对象的方法,或者叫绑定方法。

    print(g1.attack)      #对象的绑定方法

    print(Garen.attack)   #对象的绑定方法attack本质就是调用类的函数attack的功能,二者是一种绑定关系

    输出结果为:

    <bound method Garen.attack of <__main__.Garen object at 0x00000017370815F8>>

    <function Garen.attack at 0x0000001737085048>

    对象的绑定方法的特别之处在于:obj.func()会把obj传给func的第一个参数

    1.2 对象的交互

    仿照Garen类创建一个Riven类:

    实例Riven类

    交互:瑞雯攻击草丛伦

    class Riven:

        camp='Noxus'

        def __init__(self,nickname,aggressivity=54,life_value=414):

            self.nickname=nickname  #为自己的瑞雯起个别名;

            self.aggressivity=aggressivity #英雄都有自己的攻击力;

            self.life_value=life_value #英雄都有自己的生命值;

        def attack(self,enemy):

            print("attack %s" % enemy)

            enemy.life_value -= self.aggressivity

    g1=Garen('草丛伦')

    r1=Riven('瑞雯')

    print(g1.life_value)

    r1.attack(g1)

    print(g1.life_value)

    输出结果为:

    455

    瑞雯 attack 草丛伦

    401

  • 相关阅读:
    js一次性删除一个数组中多个元素
    js防抖,节流
    js 生成一个永不重复的ID
    mavon-editor 使用方法以及回显
    导出---后台返回二进制流文件数据,前端转换格式进行下载
    vue 监控enter键触发
    上传视频到阿里云
    前端图片压缩
    向后台传输表情时,手机自带输入法emoji表情的输入,提交及显示——前端解决方案
    vue 之this.$router.push、replace、go的区别
  • 原文地址:https://www.cnblogs.com/asaka/p/6758378.html
Copyright © 2011-2022 走看看