英辞郎 on the WEB によると、ellipsis とは「省略」あるいは「省略記号」という意味の英語の名詞です [1]。Python には、この Ellipsis あるいは ... という、省略をあらわす定数があります。
Python のマニュアル [2] によると、
- Ellipsis
- 省略をあらわすリテラル "..." と同じです。主に拡張スライス構文やユーザ定義のコンテナデータ型において使われる特殊な値です。Ellipsis が types.EllipsisType 型の唯一のインスタンスです。
とあります。
Ellipsis は定数ですから、変数に代入できます。
a = Ellipsis print(a, type(a))
Ellipsis <class 'ellipsis'>
あるいは、
b = ... print(b, type(b))
Ellipsis <class 'ellipsis'>
Ellipsis の具体的な使い方は、参考サイト [3]、[4] に詳しく紹介されています。
Python の Ellipsis を備忘録にした動機は、PySide6 で QTableView のモデルを作成する際に QAbstractItemModel のコードを調べたところ、下記のように ... が大量に使用されていました。これを見て、なるほどと思い、あらためて確認したいと思ったからです。
class QAbstractItemModel(PySide6.QtCore.QObject):
columnsAboutToBeInserted : ClassVar[Signal] = ... # columnsAboutToBeInserted(QModelIndex,int,int)
columnsAboutToBeMoved : ClassVar[Signal] = ... # columnsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)
columnsAboutToBeRemoved : ClassVar[Signal] = ... # columnsAboutToBeRemoved(QModelIndex,int,int)
columnsInserted : ClassVar[Signal] = ... # columnsInserted(QModelIndex,int,int)
columnsMoved : ClassVar[Signal] = ... # columnsMoved(QModelIndex,int,int,QModelIndex,int)
columnsRemoved : ClassVar[Signal] = ... # columnsRemoved(QModelIndex,int,int)
dataChanged : ClassVar[Signal] = ... # dataChanged(QModelIndex,QModelIndex,QList>int>); dataChanged(QModelIndex,QModelIndex)
headerDataChanged : ClassVar[Signal] = ... # headerDataChanged(Qt::Orientation,int,int)
layoutAboutToBeChanged : ClassVar[Signal] = ... # layoutAboutToBeChanged(); layoutAboutToBeChanged(QList>QPersistentModelIndex>,QAbstractItemModel::LayoutChangeHint); layoutAboutToBeChanged(QList>QPersistentModelIndex>)
layoutChanged : ClassVar[Signal] = ... # layoutChanged(); layoutChanged(QList>QPersistentModelIndex>,QAbstractItemModel::LayoutChangeHint); layoutChanged(QList>QPersistentModelIndex>)
modelAboutToBeReset : ClassVar[Signal] = ... # modelAboutToBeReset()
modelReset : ClassVar[Signal] = ... # modelReset()
rowsAboutToBeInserted : ClassVar[Signal] = ... # rowsAboutToBeInserted(QModelIndex,int,int)
rowsAboutToBeMoved : ClassVar[Signal] = ... # rowsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)
rowsAboutToBeRemoved : ClassVar[Signal] = ... # rowsAboutToBeRemoved(QModelIndex,int,int)
rowsInserted : ClassVar[Signal] = ... # rowsInserted(QModelIndex,int,int)
rowsMoved : ClassVar[Signal] = ... # rowsMoved(QModelIndex,int,int,QModelIndex,int)
rowsRemoved : ClassVar[Signal] = ... # rowsRemoved(QModelIndex,int,int)
class CheckIndexOption(enum.Flag):
NoOption : QAbstractItemModel.CheckIndexOption = ... # 0x0
IndexIsValid : QAbstractItemModel.CheckIndexOption = ... # 0x1
DoNotUseParent : QAbstractItemModel.CheckIndexOption = ... # 0x2
ParentIsInvalid : QAbstractItemModel.CheckIndexOption = ... # 0x4
class LayoutChangeHint(enum.Enum):
NoLayoutChangeHint : QAbstractItemModel.LayoutChangeHint = ... # 0x0
VerticalSortHint : QAbstractItemModel.LayoutChangeHint = ... # 0x1
HorizontalSortHint : QAbstractItemModel.LayoutChangeHint = ... # 0x2
def __init__(self, parent: Optional[PySide6.QtCore.QObject] = ...) -> None: ...
def beginInsertColumns(self, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], first: int, last: int) -> None: ...
def beginInsertRows(self, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], first: int, last: int) -> None: ...
def beginMoveColumns(self, sourceParent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], sourceFirst: int, sourceLast: int, destinationParent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], destinationColumn: int) -> bool: ...
def beginMoveRows(self, sourceParent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], sourceFirst: int, sourceLast: int, destinationParent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], destinationRow: int) -> bool: ...
def beginRemoveColumns(self, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], first: int, last: int) -> None: ...
def beginRemoveRows(self, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], first: int, last: int) -> None: ...
def beginResetModel(self) -> None: ...
def buddy(self, index: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex]) -> PySide6.QtCore.QModelIndex: ...
def canDropMimeData(self, data: PySide6.QtCore.QMimeData, action: PySide6.QtCore.Qt.DropAction, row: int, column: int, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex]) -> bool: ...
def canFetchMore(self, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex]) -> bool: ...
def changePersistentIndex(self, from_: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], to: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex]) -> None: ...
def changePersistentIndexList(self, from_: Sequence[PySide6.QtCore.QModelIndex], to: Sequence[PySide6.QtCore.QModelIndex]) -> None: ...
def checkIndex(self, index: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], options: PySide6.QtCore.QAbstractItemModel.CheckIndexOption = ...) -> bool: ...
def clearItemData(self, index: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex]) -> bool: ...
def columnCount(self, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex] = ...) -> int: ...
@overload
def createIndex(self, row: int, column: int, id: int = ...) -> PySide6.QtCore.QModelIndex: ...
@overload
def createIndex(self, row: int, column: int, ptr: object) -> PySide6.QtCore.QModelIndex: ...
def data(self, index: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], role: int = ...) -> Any: ...
def decodeData(self, row: int, column: int, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], stream: PySide6.QtCore.QDataStream) -> bool: ...
def dropMimeData(self, data: PySide6.QtCore.QMimeData, action: PySide6.QtCore.Qt.DropAction, row: int, column: int, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex]) -> bool: ...
def encodeData(self, indexes: Sequence[PySide6.QtCore.QModelIndex], stream: PySide6.QtCore.QDataStream) -> None: ...
def endInsertColumns(self) -> None: ...
def endInsertRows(self) -> None: ...
def endMoveColumns(self) -> None: ...
def endMoveRows(self) -> None: ...
def endRemoveColumns(self) -> None: ...
def endRemoveRows(self) -> None: ...
def endResetModel(self) -> None: ...
def fetchMore(self, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex]) -> None: ...
def flags(self, index: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex]) -> PySide6.QtCore.Qt.ItemFlag: ...
def hasChildren(self, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex] = ...) -> bool: ...
def hasIndex(self, row: int, column: int, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex] = ...) -> bool: ...
def headerData(self, section: int, orientation: PySide6.QtCore.Qt.Orientation, role: int = ...) -> Any: ...
def index(self, row: int, column: int, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex] = ...) -> PySide6.QtCore.QModelIndex: ...
def insertColumn(self, column: int, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex] = ...) -> bool: ...
def insertColumns(self, column: int, count: int, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex] = ...) -> bool: ...
def insertRow(self, row: int, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex] = ...) -> bool: ...
def insertRows(self, row: int, count: int, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex] = ...) -> bool: ...
def itemData(self, index: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex]) -> Dict[int, Any]: ...
def match(self, start: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], role: int, value: Any, hits: int = ..., flags: PySide6.QtCore.Qt.MatchFlag = ...) -> List[PySide6.QtCore.QModelIndex]: ...
def mimeData(self, indexes: Sequence[PySide6.QtCore.QModelIndex]) -> PySide6.QtCore.QMimeData: ...
def mimeTypes(self) -> List[str]: ...
def moveColumn(self, sourceParent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], sourceColumn: int, destinationParent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], destinationChild: int) -> bool: ...
def moveColumns(self, sourceParent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], sourceColumn: int, count: int, destinationParent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], destinationChild: int) -> bool: ...
def moveRow(self, sourceParent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], sourceRow: int, destinationParent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], destinationChild: int) -> bool: ...
def moveRows(self, sourceParent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], sourceRow: int, count: int, destinationParent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], destinationChild: int) -> bool: ...
@overload
def parent(self) -> PySide6.QtCore.QObject: ...
@overload
def parent(self, child: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex]) -> PySide6.QtCore.QModelIndex: ...
def persistentIndexList(self) -> List[PySide6.QtCore.QModelIndex]: ...
def removeColumn(self, column: int, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex] = ...) -> bool: ...
def removeColumns(self, column: int, count: int, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex] = ...) -> bool: ...
def removeRow(self, row: int, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex] = ...) -> bool: ...
def removeRows(self, row: int, count: int, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex] = ...) -> bool: ...
def resetInternalData(self) -> None: ...
def revert(self) -> None: ...
def roleNames(self) -> Dict[int, PySide6.QtCore.QByteArray]: ...
def rowCount(self, parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex] = ...) -> int: ...
def setData(self, index: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], value: Any, role: int = ...) -> bool: ...
def setHeaderData(self, section: int, orientation: PySide6.QtCore.Qt.Orientation, value: Any, role: int = ...) -> bool: ...
def setItemData(self, index: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex], roles: Dict[int, Any]) -> bool: ...
def sibling(self, row: int, column: int, idx: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex]) -> PySide6.QtCore.QModelIndex: ...
def sort(self, column: int, order: PySide6.QtCore.Qt.SortOrder = ...) -> None: ...
def span(self, index: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex]) -> PySide6.QtCore.QSize: ...
def submit(self) -> bool: ...
def supportedDragActions(self) -> PySide6.QtCore.Qt.DropAction: ...
def supportedDropActions(self) -> PySide6.QtCore.Qt.DropAction: ...
参考サイト
- ellipsisの意味・使い方・読み方|英辞郎 on the WEB
- Built-in Constants — Python 3.12.4 documentation
- Python: Ellipsis について - CUBE SUGAR CONTAINER [2016-06-26]
- NumPy配列ndarrayの次元をEllipsis(...)で省略して指定 | note.nkmk.me
にほんブログ村
#オープンソース


0 件のコメント:
コメントを投稿