跳转至主要内容
Version: v1.6.0

面向数据对象式编程

Taichi 是一种 面向数据 编程(DOP)的语言。 但是,一刀切地使用 DOP 会使模块化变得困难。 为实现代码模块化,Taichi 从面向对象编程(OOP)中借鉴了一些概念。 为了方便起见,我们将称此混合模式称为面向数据对象式编程(ODOP)。

note

DOP approaches coding in a unique way. 你可能熟悉 OOP,但面向数据的设计将一切都视作可以操作的数据。 这将功能与数据区分开来。 二者不再通过一套规则相互联系。 你的 DOP 程序是通用的,并处理大量的数据。 为了保证函数耗费尽可能少的精力,你应该尽可能使数据与输出数据邻近。

ODOP 设计允许你在类中组织数据和方法,并调用方法来操纵 Taichi 作用域内的数据。 Taichi 提供了两种不同类型的类来实现这一目的,并用两个装饰器@ti.data_oriented@ti.dataclass 区分开来:

  • 面向数据的类由 @ti.data_oriented 装饰,当你的数据在 Python 作用域中活跃更新(例如当前时间和用户输入事件)并在 Taichi kernel 中追踪,建议使用面向数据的类。 This type of class can have native Python objects as members and must be instantiated in the Python scope. 面向数据的类 描述了这一类型的类。
  • 数据类由 @ti.dataclass 装饰,是 ti.types.struct 的封装器。 数据类提供更多的灵活性。 你可以把 Taichi 函数定义为它的方法,并在 Taichi 作用域内调用这些方法。 Taichi 数据类 描述了这一类型的类。
本文有帮助吗?