蛋炒饭妖妖 发表于 2016-12-2 13:29:35

第45课的课后习题 __repr__和__str__

第45课的课后习题

为什么我直接打印demo.x不会打印出x的值啊?
感觉都没有进到__repr__和__str__里面去。

求解答为什么~~~
class Demo():
    def __init__(self):
      self.x='FishC'
    def __repr__(self):
      print self.x
    __str__=__repr__

    def __setattr__(self, key, value):
      self.__dict__=value
    def __getattr__(self, item):
      return self.item
demo = Demo()
demo.x
demo.x = "X-man"
demo.x

老子最酷 发表于 2016-12-2 14:14:54

你用的是python2是吧   整个程序是没有错的,你是不是在.py文件中直接实例化的,可以去命令行实例化并调用x都是可以打印的,然而并不知道原因是什么

蛋炒饭妖妖 发表于 2016-12-2 15:10:38

老子最酷 发表于 2016-12-2 14:14
你用的是python2是吧   整个程序是没有错的,你是不是在.py文件中直接实例化的,可以去命令行实例化并调用x ...

用的是2.7   用pycharm跑的
我也觉得很神奇,为什么直接实例化就不可以呢?
按照道理来说在文件里面也应该是逐行执行的呀~~

老子最酷 发表于 2016-12-3 11:14:41

对啊   我用的是3.5,也是这样的,很疑惑

蛋炒饭妖妖 发表于 2016-12-5 08:55:22

老子最酷 发表于 2016-12-3 11:14
对啊   我用的是3.5,也是这样的,很疑惑

好神奇。。。

蛋炒饭妖妖 发表于 2016-12-5 08:55:59

求大神解答啊~~

蛋炒饭妖妖 发表于 2016-12-5 17:09:28

这个问题一直都在,求解释啊。。

小甲鱼 发表于 2022-12-16 01:33:44

>>> class Demo:
        def __init__(self):
                self.x = "FishC"
        def __repr__(self):
                return self.x
        __str__ = __repr__

       
>>> demo = Demo()
>>> demo
FishC
页: [1]
查看完整版本: 第45课的课后习题 __repr__和__str__