Message261266
super() without arguments gives proper "super() without arguments" in functions, generator functions nested in methods, if *those* do not have arguments. But if you use super() in a nested function that takes an argument, or in a generator expression or a comprehension, you'd get
Got exception: TypeError super(type, obj): obj must be an instance or subtype of type
which is really annoying. Furthermore, if a nested function took another instance of type(self) as the first argument, then super() could refer unexpectedly to wrong instance:
class Bar(Foo):
def calculate(self, other_foos):
def complicated_calculation(other):
super().some_method(other)
for item in other_foos:
complicated_calculation(item)
now the `super()` call would not have implied `self` of `calculate` as the first argument, but the `other` argument of the nested function, all without warnings.
I believe it is a mistake that these nested functions can see `__class__` at all, since it would just mostly lead them misbehaving unexpectedly. |
|
Date |
User |
Action |
Args |
2016-03-06 18:57:29 | ztane | set | recipients:
+ ztane |
2016-03-06 18:57:29 | ztane | set | messageid: <1457290649.73.0.734693015263.issue26495@psf.upfronthosting.co.za> |
2016-03-06 18:57:29 | ztane | link | issue26495 messages |
2016-03-06 18:57:29 | ztane | create | |
|