對象系統

badge

可以分配給變量的所有數據。Object 類的屬性如下

  • .__repr__: 返回對象的(非豐富)字符串表示
  • .__sizeof__: 返回對象的大小(包括堆分配)
  • .__dir__: 返回對象屬性列表
  • .__hash__: 返回對象的哈希值
  • .__getattribute__: 獲取并返回對象的屬性
  • .clone: 創建并返回一個對象的克隆(在內存中有一個獨立的實體)
  • .copy: 返回對象的副本(指向內存中的同一事物)

記錄

由記錄文字({attr = value; ...})生成的對象 這個對象有基本的方法,比如.clone.__sizeof__

obj = {.x = 1}
assert obj.x == 1

obj2 = {*x; .y = 2}
assert obj2.x == 1 and obj2.y == 2

屬性

與對象關聯的對象。特別是,將 self (self) 作為其隱式第一個參數的子例程屬性稱為方法

# 請注意,private_attr 中沒有`.`
record = {.public_attr = j; private_attr = 2; .method = self -> self.i + 1}
record. public_attr == 2
record.private_attr # AttributeError: private_attr 是私有的
assert record.method() == 3

元素

屬于特定類型的對象(例如,"1"是"Int"類型的元素)。所有對象至少是{=}類型的元素 類的元素有時稱為實例

子程序

表示作為函數或過程(包括方法)實例的對象。代表子程序的類是"子程序" 實現 .__call__ 的對象通常稱為 Callable

可調用

一個實現.__call__的對象。它也是 Subroutine 的父類

類型

定義需求屬性并使對象通用化的對象 主要有兩種類型: 多態類型和單態類型。典型的單態類型有IntStr等,多態類型有Option Int[Int; 3]等 此外,定義改變對象狀態的方法的類型稱為 Mutable 類型,需要在變量屬性中添加 !(例如動態數組: [T; !_])

班級

具有 .__new__.__init__ 方法等的類型。實現基于類的面向對象

功能

對外部變量(不包括靜態變量)有讀權限但對外部變量沒有讀/寫權限的子程序。換句話說,它沒有外部副作用 Erg 函數的定義與 Python 的不同,因為它們不允許副作用

程序

它對外部變量具有讀取和"自我"權限,對靜態變量具有讀/寫權限,并允許使用所有子例程。它可能有外部副作用

方法

隱式將"self"作為第一個參數的子例程。它與簡單的函數/過程是不同的類型

實體

不是子例程和類型的對象 單態實體(1"a" 等)也稱為值對象,多態實體([1, 2, 3], {"a": 1})也稱為容器對象