Pyslvs 使用手冊

  • Home
    • Site Map
    • reveal
    • blog
  • 簡介
    • 機構與機器
    • Pyslvs 介面
      • Mechanism
      • Inputs
      • Synthesis
  • 操作
    • 模擬操作
      • 曲柄滑塊
      • 四連桿
    • 尺寸合成操作
    • 構造合成操作
    • 由現有設計進行尺寸合成
  • 下載
  • 分析
    • 三角形表示式
  • 範例
    • 模擬範例
      • Quick return mechanism
      • Watt six-bar linkage
      • Stephenson six-bar linkage
      • Klann linkage
    • 尺寸合成範例
    • 結構合成範例
    • 產品設計範例
  • Python 教學
    • 控制流程
    • 簽章
    • 複製與參照
    • 物件導向
    • 類型註解
  • 開發
    • Windows 開發
      • 環境修正
      • PyInstaller 對 Windows 的支援
    • Ubuntu 開發
      • AppImage 包裝
    • Mac OS X 開發
      • PyInstaller 對 Mac OS X 的支援
    • 參與協同
      • 註解規則
      • 命名規則
      • 類型註解規則
    • Kmol-editor
  • 參考
    • Misc
命名規則 << Previous Next >> Kmol-editor

類型註解規則

建議對任何 Functions 與 Methods 都加上類型註解(參見 PEP 484),必要時在一般名稱也可做註記(回傳值無法推斷時)。

if not row > -1:
    return

# Here is not None!
item: MyItem = table.item(row)
item.do_something()

若是回傳 None 值,可以不加上回傳值的註解。

def func(a: bool):
    if a:
        return
    do_my_job()

序列的樣式為 Sequence[T]、List[T]、Iterator[T] 等,唯獨 Tuple[T] 為固定長度,應標示 Tuple[T, ...]。

def _join_more(iter_obj: Iterable[int]) -> Tuple[int, ...]:
    """Convert iterable object to tuple."""
    return tuple(iter_obj) + (1,)

若是可能為多種非繼承類型,使用 Union。

s: Union[str, Sequence[bytes]] = s_func()

若是可能為 None 值,應加上 Optional。

def func(*, labels: Optional[Sequence[int]] = None):
    ...

Functions 使用 Callable[[In_T1, InT2], Out_T]。

def danger(func: Callable[[Any], Any]) -> Callable[[Any], Any]:
    """My danger decorator."""

    def wrapper_func(*args):
        """Is danger function."""
        print("Danger!")
        return func(*args)

    return wrapper_func


@danger
def foo():
    ...

造成遞迴引用類型時應改為字串。

class MyClass:

    def __add__(self, p: 'MyClass') -> 'MyClass':
        ...

命名規則 << Previous Next >> Kmol-editor

Copyright © All rights reserved | This template is made with by Colorlib