In Pydantic, you can use the `@validator` decorator to set the value of one attribute based on the value of another during validation. To achieve this, you can use the `pre=True` parameter if you want to validate the attributes before any other validation rules are applied.
Here's an example of how to set the value of `attB` when validating the value of `attA`:
```python
from pydantic import BaseModel, validator
class MyModel(BaseModel):
attA: int
attB: int = None # Default value can be None or some other value
@validator('attA', pre=True)
def set_attB_from_attA(cls, attA_value, values):
# Here, we can set attB based on attA
values['attB'] = attA_value * 2 # Example logic: attB is twice the value of attA
return attA_value
# Example usage
model = MyModel(attA=5)
print(model.attA) # Output: 5
print(model.attB) # Output: 10
```
### Explanation:
1. **BaseModel**: `MyModel` inherits from `BaseModel`, which is the base class for creating Pydantic models.
2. **Attributes**: `attA` is defined as an integer, and `attB` is also an integer with a default value of `None`.
3. **Validator**:
- The `@validator('attA', pre=True)` decorator is applied to `set_attB_from_attA`.
- This method takes `attA_value` (the value for `attA`) and `values` (a dictionary of attribute values, which may include other validated fields).
- Inside the method, `attB` is set based on the value of `attA`. In this case, `attB` is set to be double the value of `attA`.
4. **Return Value**: The validated value of `attA` is returned, which allows the validation process to continue.
When you create an instance of `MyModel`, `attB` will automatically be set based on the value of `attA` during validation.