объекта? я попробовал в лоб
x.phase1=zphase1
x.phase1()
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: zphase1() missing 1 required positional argument: 'self'
x.phase1
<function zphase1 at 0x7f57e43d70d0>
но как видно ничего не вышло и мне не понятно почему
ну так переведи ошибку ебаный сыр
даже огурчинский юзает пичарм делаем выводы
а че? я помню твой скрин из диспетчера задач уахахаух
ясно, что в метод хочет self. другой вопрос почему его не передают ведь self это инстанс класса и вызываю я его через инстанс.
можно. но подумай почему ошибка) первым аргументом в метод передается ссылка на сам объект. Т.е. ты должен обеспечить чтобы манки функцию он был передан
как раз передают. почитай ошибку , что у тебя выскочила
ну, я больше чем уверен, что если я сделаю вот так x.phase1(x), то у меня всё сработает, но так как это функция внутри пайплайна, то так мне вообще не нравиться
что за херня? что чем ты запатчить хочешь? o.m = partial(newm, o) вот так это патчится
Всё ж логично: вызов x.phase1() аналогичен type(X).phase1.__get__(x, type(X))() аналогичен partial(type(X).phase1, x)()
Если phase1 не дескриптор, у него не будет метода __get__.
А здесь по-другому работает - a.print_hello() и A.print_hello.__get__(a, A)() дают разный результат: In [104]: class A: ...: def print_hello(self): ...: print("hello") ...: In [105]: a = A() In [106]: a.print_hello() hello In [107]: def print_goodbye(): print("goodbye") In [108]: a.print_hello = print_goodbye In [109]: a.print_hello() goodbye In [110]: A.print_hello.__get__(a, A)() hello
mro же, класс A не знает о том что у его экземпляра перезаписан атрибут
Это означает, что a.print_hello() как-то по-другому находит атрибут print_hello у объекта a. Не A.print_hello.__get__(a, A), потому что тогда результат был бы одинаковый. Видимо, проверяет сначала __dict__ объекта a. Сейчас гляну дебаггером.
Когда вызывается метод не перезаписанный в явном виде (берущийся от класса) с методом происходит все тоже самое что и с property где fget это функция которая биндит экземпляр к функции (сохраняет в атрибут __self__ итоговой функции)
Обсуждают сегодня