On 11/11/22 11:29, Dieter Maurer wrote:
Ian Pilcher wrote at 2022-11-11 10:21 -0600:
class SuperClass(object):
@staticmethod
def foo():
pass
class SubClass(SuperClass):
bar = SuperClass.foo
^^^^^^^^^^
Is there a way to do this without specifically naming 'SuperClass'?
Unless you overrode it, you can use `self.foo` or `SubClass.foo`;
if you overrode it (and you are using either Python 3 or
Python 2 and a so called "new style class"), you can use `super`.
When you use `super` outside a method definition, you must
call it with parameters.
SubClass.foo doesn't work, because 'SubClass' doesn't actually exist
until the class is defined.
>>> class SubClass(SuperClass):
... bar = SubClass.foo
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in SubClass
NameError: name 'SubClass' is not defined. Did you mean: 'SuperClass'?
Similarly, self.foo doesn't work, because self isn't defined:
>>> class SubClass(SuperClass):
... bar = self.foo
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in SubClass
NameError: name 'self' is not defined
--
========================================================================
Google Where SkyNet meets Idiocracy
========================================================================
--
https://mail.python.org/mailman/listinfo/python-list