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

原文地址:https://www.cnblogs.com/asaka/p/6758378.html