Dasha
Вопрос был про вызов родительского конструктора...
А можно пояснить, что значит каждый аргумент?
super([type[, object-or-type]])
"type - тип, от которого следует начать поиск объекта-посредника" - как это понимать? Это класс, где следует искать объект? Но класс не является объектом
Что тогда подразумевается под объектом?
Dasha
Пытаюсь понять суть полностью
Nikolay Markov
Seagull
Dasha
Вот тут тоже непонятно:
obj-or-type: Если не указан, возвращается несвязанный объект-посредник. Если атрибут является объектом, то будет получен посредник для получения метода объекта, для которого isinstance(obj, type) возвращает True. Если атрибут является типом, то будет получен посредник для получения метод класса, для которого issubclass(subtype, type) возвращает True.
Dasha
Dasha
Nikolay Markov
Но это излишне и это убрали
Nikolay Markov
Vitaliy
Nikolay Markov
Лучше ответь на вопрос, у какого именно класса super() будет дёргать метод?
Nikolay Markov
Dasha
Nikolay Markov
Потребует
Тогда пиши на ассемблере
Vitaliy
Nikolay Markov
/
в питоне есть многопоточность?
Oleksii
pop_data.apply( (lambda x: x.replace('+','').replace(',','')), axis=1, index=['Installs'])
Вот почему ругается на :
TypeError: ("<lambda>() got an unexpected keyword argument 'index'", 'occurred at index 0')
Nikolay Markov
Nikolay Markov
За крайне редким исключением
Nikolay Markov
Твой кейс - .str
Oleksii
Ну ладно. Буду так)
Nikolay Markov
ну просто apply - это цикл по строчкам с перебором
Nikolay Markov
то есть это убивает всю идею и профит от пандаса вообще - у тебя все операции должны быть векторизованы
Nikolay Markov
если кто-то в пандасе без очень уважительной причины использует apply или циклы - его надо бить на кодревью клавиатурой
Tishka17
Tishka17
Nikolay Markov
Tishka17
хз
Nikolay Markov
вот именно
Nikolay Markov
потому что не нужно
Tishka17
видимо это на какой-то очень хитрый кейс
Nikolay Markov
а ответ на вопрос выше - super() вызывает не метод родительского класса, а метод следующего класса в цепочке MRO
Nikolay Markov
то есть, по сути, если мы наследуемся от нескольких классов, где в одном из них дергается super(), то он вызовет метод не у своего парента, а у следующего класса в цепочке наследования
Nikolay Markov
это немного ломает мозг, но вообще забавная штука
Michael
можете пояснить прикол? Почему x доступен извне for'a?
>>> for x in [1,2,3,4]:
pass
>>> x
4
Nikolay Markov
Nikolay Markov
он просто становится равен последнему значению в итераторе
Michael
X я не создавал до for'a
Я ожидал какую-то систему зоны видимости\доступности
Vitaliy
Это как? И причем тут ромбоидальное наследование?
class A(object):
...
class B(A):
def __init__(self):
print(f'[#] in class B')
class C(A):
def __init__(self):
print(f'[#] in class C')
class D(B, C):
def __init__(self):
print(f'[#] in class D')
super().__init__()
if __name__ == '__main__':
D()
> [#] in class D
> [#] in class B
class A(object):
...
class B(A):
...
class C(A):
def __init__(self):
print(f'[#] in class C')
class D(B, C):
def __init__(self):
print(f'[#] in class D')
super().__init__()
if __name__ == '__main__':
D()
> [#] in class D
> [#] in class C
Nikolay Markov
Michael
Это python way?
Явное лучше неявного.
Тут неявно создалась переменная х
Nikolay Markov
Vitaliy
Michael
Andrey
Nikolay Markov
Nikolay Markov
при условии вызова D().foo(), конечно
Nikolay Markov
Michael
Nikolay Markov
Michael
Наследование идет слева направо
Nikolay Markov
хотя, казалось бы, какое отношение C имеет к вызову super() внутри B
Vitaliy
Vitaliy
Nikolay Markov
Прямое
по умолчанию никакого, но в таком коде начинает иметь
Michael
Дважды
дважды не ванговал.
Michael
а
Nikolay Markov
Nikolay Markov
поэтому у многих рвет крышу
Michael
там первое от init, второе от функции, понял
Vitaliy
Andrew
Ребятки, пытаюсь с линукса с помощью самбы передать файл на расшареную папку винды, но при попытке коннекта получаю следующий фейлюр:
smb.smb_structs.OperationFailure: Failed to store pdf.pdf_.pdf on \\*.*.*.*\Virus: Unable to connect to shared device
Код, которым отправляю:
smbconn = SMBConnection(usrName, password, 'ATDWorker', '**********', use_ntlm_v2=True, sign_options=0, is_direct_tcp=True)
conn = smbconn.connect(ip=remoteIp, port=445,sock_family=2, timeout=30)
with open(filename_for_save, 'r') as report_to_send:
transfer = smbconn.storeFile(remoteAddress,'\\' + only_name, report_to_send)
Tishka17
Dasha
Tishka17
хз =)
Tishka17
я внезапно понял, что никогда не заморчивался с множественным наследованием и хз как его нормально юзать
Андрей
Tishka17