python中 object的实例是_在python中打印对象/实例名

更好的设计原则是不依赖对象的特定名称,如下所示:class badguy(object):

def __init__(self):

pass

b = badguy()

print b

>>> <__main__.badguy object at> # Not a great name huh? :D

这会导致大量带有赋值绑定和引用的问题,最重要的是不允许您根据用户或程序的选择命名对象。

相反,将一个名为self._name(9.6 Classes - Private Variables)或self.name的实例变量添加到类中,如果您希望允许在类的作用域(中)之外的访问,可以将其命名为任何。这不仅是一个更加面向对象的设计,而且现在您可以实现像__hash__这样的方法,以便能够基于一个名称创建一个散列,例如使用一个对象作为键(有更多的理由说明这种设计选择更好!)。class badguy(object):

def __init__(self, name=None):

self.hp = 4

self._name = name

@property

def name(self):

return self._name

@name.setter

def name(self, name):

self._name = name

def attack(self):

print("hit")

self.hp -= 1

def still_alive(self):

if self.hp <=0:

print("enemy destroyed")

else :

print ("{} has {} hp left.".format(self.name, self.hp))

样本输出:b = badguy('Enemy 1')

print b.name

>>> Enemy 1

b.still_alive()

>>> Enemy 1 has 4 hp left.

b.name = 'Enemy One' # Changing our object's name.

b.still_alive()

>>> Enemy One has 4 hp left.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值