__and__
эмулирует побитовую конъюнкцию (побитовый AND), которая в питоне делается так:a & b
m.start()
.re.finditer()
:[m.start() for m in re.finditer("\d", s1)]
idxs = []
l = 0
while m := re.search("\d", s1):
idxs.append(l + m.start())
l += m.end()
s1 = s1[m.end():]
[i for i, c in enumerate(s1) if c >= '0' and c <= '9']
class A:
def __init__(self, value):
print("A::__init__")
self.value = value
class B:
def __init__(self, name):
print("B::__init__")
self.name = name
class C(A, B):
def __init__(self, name, value):
super().__init__(value)
super(A, self).__init__(name)
print(C.__mro__)
t = C('Name', 0)
super(Class, obj).method()
ищется метод родительского класса, правее Class по цепочке mro:(<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)
super()
- в данном случае равносильно super(C, self)
- поиск начнется с A if json.load(jsonconfig)['DEBUG']:
dire = json.load(jsonconfig)
data = json.load(jsonconfig)
if data['DEBUG']:
dire = data['directory']
# здесь указал пароль от учетной записи ubuntu с одноименным именем username
\password
(?, ?, ?, ?, ?, ?, ?, ?, ?)
на (%s, %s, %s, %s, %s, %s, %s, %s, %s)
Конструкция with кажется предполагает закрытие соединения с БД
Cursors can be used as context managers: leaving the context will close the cursor.
class A:
def __init__(self, a = []):
self.a = a
class B(A):
pass
o1 = A()
o2 = B()
o1.a.append(17)
print(o1.a)
# [17]
print(o2.a)
# [17]
self.a
для всех экземпляров, созданных без передачи параметра в конструктор, ведут на один и тот же объект список. a**num
будет очень медленным. В питоне есть функция pow, которая имеет волшебный третий параметр и умеет вычислять возведение в степень по модулю очень быстро.