Size: a a a

2020 December 01

fs

falamous starstrider in #ctfchat
обьект фактически это хешмап для которого есть некоторые гарантии изза его использования
источник

in #ctfchat
falamous starstrider
а здесь нет разве?
ну, смотри.
У тебя тут как бы есть класс, но на деле это просто объект с атрибутами, которые могут играть роль методов
источник

R

Rubikoid in #ctfchat
вот в си проблем нет,
структура она и в африке структура
А потом у тебя в структуре другая структура, и они кастуются друг в друга...
источник

in #ctfchat
Rubikoid
А потом у тебя в структуре другая структура, и они кастуются друг в друга...
источник

R

Rubikoid in #ctfchat
falamous starstrider
с встроенными обьектами так нельзя если что
Можно, если они создаются обычным питоном, а не сишной частью
источник

in #ctfchat
а вы, я посмотрю, man of culture
источник

R

Rubikoid in #ctfchat
А это так реализуется наследования на чистых сях
источник

fs

falamous starstrider in #ctfchat
Rubikoid
Можно, если они создаются обычным питоном, а не сишной частью
угу
источник

v

vient in #ctfchat
можно прозрачно захукать метод, например
class A:
   def f(self, *args, **kwargs):
       print('A.f called', args, kwargs)

a = A()

def f(orig_method, self, *args, **kwargs):
   print("hook called")
   orig_method(*args, **kwargs)

import functools
a.f = functools.partial(f, a.f, a)

a.f()
a.f(1, lol='kek')
источник

in #ctfchat
Rubikoid
А это так реализуется наследования на чистых сях
а зачем?
источник

v

vient in #ctfchat
очень удобно
источник

fs

falamous starstrider in #ctfchat
ну, смотри.
У тебя тут как бы есть класс, но на деле это просто объект с атрибутами, которые могут играть роль методов
в си у структуры могут быть неинецилизированные поля и это тот же пиздец
источник

R

Rubikoid in #ctfchat
Но большая часть стандартной либы питона всё равно на сях написана, так что в целом это правильно
источник

in #ctfchat
vient
можно прозрачно захукать метод, например
class A:
   def f(self, *args, **kwargs):
       print('A.f called', args, kwargs)

a = A()

def f(orig_method, self, *args, **kwargs):
   print("hook called")
   orig_method(*args, **kwargs)

import functools
a.f = functools.partial(f, a.f, a)

a.f()
a.f(1, lol='kek')
что я только что увидел
источник

fs

falamous starstrider in #ctfchat
Rubikoid
А это так реализуется наследования на чистых сях
наследование умерло
источник

v

vient in #ctfchat
в Lua ещё круче, там вообще нет понятия класса (насколько я понимаю)
источник

in #ctfchat
vient
можно прозрачно захукать метод, например
class A:
   def f(self, *args, **kwargs):
       print('A.f called', args, kwargs)

a = A()

def f(orig_method, self, *args, **kwargs):
   print("hook called")
   orig_method(*args, **kwargs)

import functools
a.f = functools.partial(f, a.f, a)

a.f()
a.f(1, lol='kek')
оно же должно отбросить тень и сказать, мол, дружище, готовься к фистингу с такими приколами
источник

in #ctfchat
и выдать ошибку
источник

v

vient in #ctfchat
всё не примитивное это мап, как в js,  видимо
источник

v

vient in #ctfchat
нет понятия "метод"
источник