__getattr__方法是python的内置方法之一, 通常在对类对象的属性进行操作时被调用。
NB(注意): # 后面的部分表示输出结果
代码如下:
class Sum(object):
total = 0
def __init__(self, *argv):
self.list = []
print(Sum.total)
for i in argv:
self.list.append(i)
if Sum.total == 0:
print("当前无参数传入")
else:
print("传入了{}个参数,分别是:".format(Sum.total), end=" ")
for i in argv:
print("{}".format(i), end=" ")
def __getattribute__(self, total):
Sum.total += 1
return object.__getattribute__(self, total)
main = Sum(1, 1, 1) # 传入了3个参数,分别是: 1 1 1
机制:当执行self.list = []
时我们为当前类引入了一个list
属性,当self.append(i)
被执行时,此时对类的list
属性进行了操作,因此直接调用__getattribute__(self, total)
函数,实现Sum.total
变量的自增,之后返回list
属性。注意,这里__getattribute__(self, total)
函数中的参数total
指代的是属性list
, 而不是Sum.total
,因为传递进入三个参数1,1,1
,因此for i in argv:
循环将被执行三次,对应的Sum.total
值也自增三次,变为3
,最终判断,打印else
后的内容,再循环打印出传递进入的参数。
说明:这里仅仅以这一个例子以偏概全地解释了以下该方法的用法,并不全面,实际应用还需要深入研究。(未来补充)