鱼C论坛

 找回密码
 立即注册
查看: 1878|回复: 9

[已解决]python getattr()

[复制链接]
发表于 2017-7-17 18:06:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

1.查看帮助文档发现,内建函数getattr()返回的类型是value,这个类型具体是哪种类型,是数值类型吗,有时还返回对象的内存地址?


2.getattr()有什么用?什么时候用?
下面调用getattr()有什么不同?
class Myclass(Object):
        fo = '9'
        def foo():
                print('in foo')


myclass = Myclass()
f = getattr(myclass,'foo')
f()

f = getattr(myclass,'fo')
print(f)
最佳答案
2017-7-17 19:49:06
返回的是类实例化对象的属性的值,如果你设置了第三个参数,在没有这个属性的时候返回的是第三个参数
>>>class A:
            def  __init__(self):
                self.x = 10
>>>a = A()
>>>getattr(a,"x")
10
>>>getattr(a,'y','你访问的属性不存在')
‘你访问的属性不存在’
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-17 18:32:17 | 显示全部楼层
http://blog.sina.com.cn/s/blog_4ba2c6a201012avo.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-17 18:50:04 | 显示全部楼层
返回的是一个对象~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-17 19:49:06 | 显示全部楼层    本楼为最佳答案   
返回的是类实例化对象的属性的值,如果你设置了第三个参数,在没有这个属性的时候返回的是第三个参数
>>>class A:
            def  __init__(self):
                self.x = 10
>>>a = A()
>>>getattr(a,"x")
10
>>>getattr(a,'y','你访问的属性不存在')
‘你访问的属性不存在’
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-18 10:33:52 | 显示全部楼层
左手十字 发表于 2017-7-17 19:49
返回的是类实例化对象的属性的值,如果你设置了第三个参数,在没有这个属性的时候返回的是第三个参数

我调用属性,返回的是属性值
我调用方法,返回的只是方法的名字,还需要方法名称后面加括号才能调用的,为什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-18 11:56:58 From FishC Mobile | 显示全部楼层
只为 发表于 2017-7-18 10:33
我调用属性,返回的是属性值
我调用方法,返回的只是方法的名字,还需要方法名称后面加括号才能调用的,为什 ...

方法就是函数,你调用方法方法当然要加括号了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-18 14:03:12 | 显示全部楼层
左手十字 发表于 2017-7-18 11:56
方法就是函数,你调用方法方法当然要加括号了

我的意思是,如果用getattr()判断是否有这个方法,有的话,返回的是方法的名称?
还有   help(getattr)查看帮助,这个内置函数的返回类型是value,value到底是个什么类型?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-18 17:55:36 From FishC Mobile | 显示全部楼层
只为 发表于 2017-7-18 14:03
我的意思是,如果用getattr()判断是否有这个方法,有的话,返回的是方法的名称?
还有   help(getattr)查看 ...

这个就是判断属性的BIF,你用它判断方法干嘛。属性返回的值是什么类型,它就返回什么类型。这你还不明白我就没办法了。。。。attr就是attribute的缩写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-18 20:54:06 | 显示全部楼层
左手十字 发表于 2017-7-18 17:55
这个就是判断属性的BIF,你用它判断方法干嘛。属性返回的值是什么类型,它就返回什么类型。这你还不明白 ...

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-23 10:08:11 | 显示全部楼层
左手十字 发表于 2017-7-17 19:49
返回的是类实例化对象的属性的值,如果你设置了第三个参数,在没有这个属性的时候返回的是第三个参数

可以写方法名的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 22:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表