Похоже, что атрибуты - это способ хранить разные переменные вместе.
Это то, что ООП (очень) обычно (как и JAVA) создает классы, которые представляют сущности. Эти сущности в основном состоят из разных переменных (или атрибутов)
Этот пример по вашей ссылке и сравнение с JAVA прояснит это:
MyAttribute = class(TCustomAttribute)
private
FName: string;
FAge: Integer;
public
constructor Create(const Name : string; Age : Integer);
property Name : string read FName write FName;
property Age : Integer read FAge write FAge;
end;
Это как маленький класс в JAVA:
public class Customer()
{
String Fname;
int FAge;
public Customer()
{
/*constructor code*/
}
}
и создание класса из вашего примера:
TMyClass = class
public
[MyAttribute('Malcolm', 39)]
Это как создание нового объекта персонажа:
Customer[] cust1= new Customer['Malcolm', 39]