Еще одна не охваченная точка - это параметры для инициализации классов. Поскольку пункт назначения super
зависит от подкласса, единственным хорошим способом передачи параметров является их упаковка. Затем будьте осторожны, чтобы не иметь одинаковое имя параметра с разными значениями.
Пример:
class A(object):
def __init__(self, **kwargs):
print('A.__init__')
super().__init__()
class B(A):
def __init__(self, **kwargs):
print('B.__init__ {}'.format(kwargs['x']))
super().__init__(**kwargs)
class C(A):
def __init__(self, **kwargs):
print('C.__init__ with {}, {}'.format(kwargs['a'], kwargs['b']))
super().__init__(**kwargs)
class D(B, C): # MRO=D, B, C, A
def __init__(self):
print('D.__init__')
super().__init__(a=1, b=2, x=3)
print(D.mro())
D()
дает:
[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]
D.__init__
B.__init__ 3
C.__init__ with 1, 2
A.__init__
Вызов суперкласса __init__
непосредственно к более прямому назначению параметров заманчиво, но не удается, если есть какой-либо вызов super
в суперклассе и / или изменен MRO, а класс A может быть вызван несколько раз, в зависимости от реализации.
В заключение: совместное наследование и супер и конкретные параметры для инициализации не работают вместе очень хорошо.
См. Синтаксис URI скайпа здесь: https://docs.microsoft.com/en-us/skype-sdk/skypeuris/skypeuriapireference
Так что ваша ссылка должна выглядеть как [111 ]. Есть также такие параметры, как call
или chat
, которые могут быть добавлены, чтобы вызвать тип взаимодействия.
Здесь вы можете сделать:
case "finance":
await context.PostAsync($"For {ig} related queries write to [Finance Skype](skype:targetUserName?chat&topic=yourTopic)");