from abc import ABC, abstractmethod
from math import sin, cos, pi
class Figure(ABC):
def __init__(self, height=2):
assert 1 < height < 20 # незачем больше
self.height = height
@abstractmethod
def draw(self):
pass
class Triangle(Figure):
def draw(self):
for i in range(self.height - 1):
print(f'{"/":>{self.height - i}}{"":>{i * 2}}\\')
print('─' * (self.height * 2))
class Square(Figure):
def draw(self):
w = self.height * 2 - 2
print('┌', '┐', sep='─' * w)
for _ in range(self.height - 2):
print('│', '│', sep=' ' * w)
print('└', '┘', sep='─' * w)
class Ellipse(Figure):
def __init__(self, height=7, width=None):
assert 6 < height < 20 # меньше никак
if width is None:
width = height
else:
assert 6 < width < 20
self.height, self.width = height, width
def draw(self):
buf = [[' '] * (self.width * 2) for _ in range(self.height)]
rx, ry = self.width - 1., self.height / 2 - .5
for i in range(100):
φ = i * pi / 50
buf[round(ry * (1 + sin(φ)))][round(rx * (1. + cos(φ)))] = '*'
for row in buf:
print(''.join(row))
Triangle(7).draw()
Square(7).draw()
Ellipse(7).draw()
Ellipse(17, 7).draw()
for i in b:
print(i.text) #Ну или делаешь что тебе надо.
soup.findAll("a", class_= "ui-link review-votes__item review-votes__dislike review-votes__dislike_with_count")
<class 'int'>
- это то, что вы увидите в ответ на введенную команду type(a)
.a = 10
b = "hello"
c = (1, 2)
#При запуске кода из файла видно только то, что выводится командой "print()"
print(type(a))
print(type(b))
print(type(c))
<class 'int'>
<class 'str'>
<class 'tuple'>
>>> x = [1, 2, [3, 4, 5, [6, 7], [8, [9, [10, 11], 12]], 13, 14], 15]
>>> from collections import Iterable
>>> def nested_to_flat(items):
for i in items:
if isinstance(i, Iterable):
yield from nested_to_flat(i)
else:
yield i
>>> list(nested_to_flat(x))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
from PyQt5.QtGui import QDrag, QPixmap, QImage, QPainter, QCursor
from PyQt5.QtCore import QMimeData, Qt
class DraggableLabel(QLabel):
def __init__(self, parent, image):
super(QLabel, self).__init__(parent)
self.setPixmap(QPixmap(image).scaledToWidth(64))
self.show()
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.drag_start_position = event.pos()
def mouseMoveEvent(self, event):
if not (event.buttons() & Qt.LeftButton):
return
if (event.pos() - self.drag_start_position).manhattanLength() < QApplication.startDragDistance():
return
drag = QDrag(self)
mimedata = QMimeData()
mimedata.setText(self.text())
mimedata.setImageData(self.pixmap().toImage())
drag.setMimeData(mimedata)
pixmap = QPixmap(self.size())
painter = QPainter(pixmap)
painter.drawPixmap(self.rect(), self.grab())
painter.end()
drag.setPixmap(pixmap)
drag.setHotSpot(event.pos())
drag.exec_(Qt.CopyAction | Qt.MoveAction)
class DropLabel(QLabel):
def __init__(self, *args, **kwargs):
QLabel.__init__(self, *args, **kwargs)
self.setAcceptDrops(True)
def dragEnterEvent(self, event):
if event.mimeData().hasImage():
print('event accepted')
event.accept()
else:
print('event rejected')
event.ignore()
def dropEvent(self, event):
if event.mimeData().hasImage():
self.setPixmap(QPixmap.fromImage(QImage(event.mimeData().imageData())))
class Widget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
label = DropLabel('drop there', self)
label.setGeometry(190, 65, 100, 100)
label_to_drag = DraggableLabel(self, 'image.png')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())
>>> class Person:
... first_name = 'First'
... last_name = 'Last'
...
... @property
... def full_name_1(self):
... return ' '.join([self.first_name, self.last_name])
...
... def full_name_2(self):
... return ' '.join([self.first_name, self.last_name])
...
>>> p = Person()
>>> p.full_name_1
'First Last'
>>> p.full_name_2()
'First Last'
>>> p.full_name_2
<bound method Person.full_name_2 of <__main__.Person object at 0xb739a5ec>>
>>>
Расскажите как вообще происходит предоставление исполнителю доступа к коду в готовом проекте, который уже на хостинге.
super
относится только к Python2. В Python3 можно просто super().__init__(*args, **kwargs)
Но если класс всё-таки передаётся, то это должен быть тот класс, в методе которого происходит вызов.