|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1.
- class A:
- def __init__(self):
- pass
- def get(self):
- print(__name__)
-
- >>> a = A()
- >>> a.get()
复制代码
2.
- class A:
- def __init__(self, a, b, c):
- self.x = a + b + c
- a = A(1,2,3)
- b = getattr(a, 'x')
- setattr(a, 'x', b+1)
- print a.x
复制代码
以上代码分别会显示什么内容为什么?看不懂
本帖最后由 Twilight6 于 2020-7-1 13:15 编辑
第一个代码:打印显示的是 __main__
__name__ 是类中的属性,当在脚本中直接运行,返回的是__main__ 而当被当作模块导入时候返回的是 模块自己的名字
这个代码的意思是当模块被直接运行时, if __name__ == '__main__' 下代码块将被运行,当模块是被导入时, if __name__ == '__main__' 下面的代码块不被运行。
第二个代码: 打印显示的是 7 (你这里的 print 忘记带括号了,除非你是2.x版本的Python)
getattr函数用来获取对象中的属性,第一个参数是被获取的对象,第二个参数就是获取的属性名
class A:
def __init__(self, a, b, c):
self.x = a + b + c
a = A(1,2,3)
b = getattr(a, 'x')
则 getattr(a, 'x') 这里 a 对象中的 x 属性 是等于 6 的 所以 b = 6
setattr() 函数 第一个参数也是填入对象,第二个是需要设置的属性名,第三个就是设置的属性值了
那么这里就是将 a 实例对象中的 x 重新赋值为 b + 1 ,而 因为之前的 b = 6 所以这里重新赋值 x 的值 所以打印结果为 7
|
|