python 递归打印实例的值

今天遇到写代码想打印下实例的具体的值,索性写了个简单的递归

def getattrValue(obj,i):
  print "    "*i,type(obj)
  for x in dir(obj):
    if hasattr(obj,x) and "__" not in x:
      if "method" not in str(getattr(obj,x)) and "object" in str(getattr(obj,x)) or "class" in str(getattr(obj,x)):
        print "    "*i,"attrName:",x," is object has attr:"
        getattrValue(getattr(obj,x),i+1)
      else:
        if "method" in str(getattr(obj,x)):
          pass
        else:
          print "    "*i,"attrName:",x
          print "    "*i,"   value:",getattr(obj, x)

简单测试:

#test
class MyObject(object):
  def __init__(self):
    self.x = 9
    self.j = MyObject2()
  def power(self):
    return self.x * self.x
class MyObject1(object):
  def __init__(self):
    self.uu = 122
    self.y = MyObject()
    self.x = 122
  def power(self):
    return self.x * self.x
class MyObject2(object):
  def __init__(self):
    self.k = 5
  def power(self):
    return self.x * self.x
if __name__ == '__main__':
  obj = MyObject1()
  getattrValue(obj,0)

结果如下:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ftytotop

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值