最赞回答 / 慕田峪6529258
之前廖老师有说过filter函数的应用。filter(函数,可迭代的对象),可迭代对象中的元素代入第一个函数,函数返回值为True,则选择,否则过滤,这就是fliter函数的功能。所以lambda x: x[0]!='_'这个匿名函数的意义 迭代对象的第一个元素不为0则返回True,否则返回False。dir(p)则是迭代对象,p的属性的列表集合。整合在一块而便是筛选出符合条件(属性不以 _ 开头)的属性。望采纳,谢谢!
2017-08-25
最赞回答 / 慕仰5534561
self.k = v 的含义是 v 的内容赋值给变量名k 生成的不是字典而setattr(object, name, values) 给对象的属性赋值,若属性不存在,先创建再赋值。
2017-08-21
最赞回答 / weibo_哥哥立正向前走了_0
如上所诉类名调用和super不要混用 ,当用类名调用时——用的是广度算法,super调用C3算法class A(object):passclass B(A):passclass C(B):passclass D(A):passclass E(D):passclass F(C, E):pass按照广度优先遍历,F的MRO序列应该是[F,C,E,B,D,A]但是C3是[F,E,D,C,B,A]
2017-08-19
最赞回答 / Alex罗伊
会打印出None是因为改成print之后get_grade(self)函数的返回值为空,而print p1.get_grade()print p2.get_grade()print p3.get_grade()语句的 意思打印出函数的返回值,所以都是None.你可以get_grade(self)函数最后加个return “abc”测试一下,会发现返回结果中None 就都变成了abc
2017-08-17
最赞回答 / 慕侠1448323
题目写错了:“如果将类属性 count 改为私有属性__count,则外部无法读取__score,但可以通过一个类方法获取,请编写类方法获得__count值。”加粗部分应该是__count。此外,如果属性写在类名下面,就是类属性,如果是写在__init__()内,就是实例属性,你可以这样理解,init传入的self就是实例自己,self.__score当然是实例的属性了,而如果要在init内调用类属性__count,就必须用Person.__count。
2017-08-17
最新回答 / 幕布斯4928452
装饰器是对函数增加一部分语句,但是还是想通过原函数名来执行左右代码。所以装饰器函数的传入参数和返回值本身都是一个函数。这里第三行实际上是调用了fun函数,因为deco函数传进来的参数本身就是一个函数。
2017-08-17
最赞回答 / Brokeninthesublima
建议联系下 递归 与迭代 或许对你有些帮助。装饰器虽重要,但是其他一样 ,不妨学完, 在回头研究,或许回头看,不懂也会有所感悟。个人见解!
2017-08-16