|
100鱼币
我的认识:python中 工厂函数比如float,str等都是工厂函数,其本质也是类。在实际操作中如float(10),返回的是10.0,就像普通函数return一样。那么问题来了,1、凭什么实例化float(即float(10))能返回一个对象,它调用了什么魔法方法吗?? 2、假设我定义一个类(比如C),然后实例化(c=C()),如何在shell中 输入 c 回车,跳出的不是c的类型信息,而是让它返回一个对象(如"123",123,一个函数等)
打个比方,在requests中,r返回的就是一个类
>>> r = requests.get('https://github.com/timeline.json')
>>> r
<Response [410]>
本帖最后由 ooxx7788 于 2017-7-11 17:18 编辑
这返回的并不是类啊,这是statue code.
至于你想返回什么信息,应该设置的是__repr__和__str__魔法方法。
- >>> import requests
- >>> r = requests.get(r'http://www.baidu.com')
- >>> type(r)
- <class 'requests.models.Response'>
- >>> r
- <Response [200]>
- >>> r.status_code
- 200
- >>> r.__repr__()
- '<Response [200]>'
- >>> r.__str__()
- '<Response [200]>'
- >>> class A:
- def __repr__(self):
- return 'FishC'
-
- >>> a = A()
- >>> a
- FishC
- >>> class B:
- pass
- >>> b=B()
- >>> b
- <__main__.B object at 0x0000001DD6015BE0> # 如果不设置__repr__,默认就是返回类对象的名字,加一个内存地址
- >>> class C:
- def __init__(self,var):
- self.var = var
- def __repr__(self):
- return str(self.var)
- def __str__(self):
- return str(self.var) +'我是标记'
-
- >>> c = C(123)
- >>> c
- 123
- >>> print(c)
- 123我是标记
复制代码
|
最佳答案
查看完整内容
这返回的并不是类啊,这是statue code.
至于你想返回什么信息,应该设置的是__repr__和__str__魔法方法。
|