# hasattr(), getattr(), delattr()

## Check if a python Object has an Attribute

## hasattr():

### Syntax:

```python
hasattr(object, string)
```

* Object (=instance) you want to check for the attribute
* String that is the name of the attribute
* Boolean (True, False)
* The above example will lead to an error as the `brand` variable is not assigned so this has to be passed in as a string
  * `NameError: name 'brand' is not defined`
* You need to pass the brand variable to the `porsche` instance
* The above example is correct
* After that it will return `True`

### Checking methods:

* This will still return `True` as python uses methods simillar to attributes (Object)
* There is no implicit difference between a method and an attribute (Object) as:
  * A method if basically a function which is an Object

## getattr():

### Syntax:

```python
getattr(object, name[,default])
```

&#x20;Output:

```
300
```

If you print the `model` attribute then it will print the string `Wragler`

If the attribute does not exist you can return a default mode:

```python
print(getattr(Jeep, 'modelllll', '4x4'))
```

Output: `4x4`

One super helpful paramteter for this is the keyword `None`:

```python
print(getattr(Jeep, 'modelllll', None))
```

### To print out functions

* Key difference is that it has `()` at the end of the getattr function&#x20;

## delattr():

* Does not work to delete the key from a dictionary
* Basically does not work on dictionaries at all
* Used to delete the attributes
* `delattr()` is the equivalant to `del`

### Syntax:

```python
delattr(object, 'string')
```

Output will print a messy output of `__dict__` but the `hp` attribute will not be found

#### There is an additional parameter `attr.startswith("string")`

* This allows you to check if an attribute starts with something
* Useful if you want to get rid of the dunder methods within the `__dict__` print statement:&#x20;

### Which is better del or delattr()?

* `del` is faster
* `delattr()` is slower but not a huge difference


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.arkannis.net/programming/python/classic-python/hasattr-getattr-delattr.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
