__init__方法是初始化方法,就是别人说的魔术方法,魔法方法,实例化的同时会自动调用,而类里面的方法,如果不调用函数是不会执行的,所以方法有通用的代码的话写到init下面,就会自动调用,init括号后面的参数可以多个参数但是self必须是第一个
时间: 2023-03-28 12:04:42 浏览: 71
__init__方法确实是一个初始化方法,它会在实例化对象时自动调用。而类里面的方法需要手动调用才能执行。如果一个方法需要在每次实例化对象时都执行,可以将通用的代码写在__init__方法下面。__init__方法的括号后面可以有多个参数,但是第一个参数必须是self,表示实例化对象本身。
相关问题
类中类似__new__、__init__的方法
在 Python 中,还有许多类似于 `__new__` 和 `__init__` 的特殊方法,它们也是用双下划线包围的方法名,被称为“魔术方法”或“特殊方法”。这些方法的作用不同,但都与类的实例化、初始化或运算有关。
例如:
- `__str__(self)`:定义了该类实例打印出来的字符串表示,可以通过 `str()` 或 `print()` 函数调用。
- `__repr__(self)`:定义了该类实例在交互式环境中显示的字符串表示,可以通过 `repr()` 函数调用。
- `__eq__(self, other)`:定义了该类实例与另一个实例是否相等,可以通过 `==` 运算符调用。
- `__lt__(self, other)`:定义了该类实例是否小于另一个实例,可以通过 `<` 运算符调用。
- `__len__(self)`:定义了该类实例的长度,可以通过 `len()` 函数调用。
这些方法都是可选的,可以根据需要进行实现。通过实现这些方法,可以使类实例更加符合预期的行为,并且可以更方便地与 Python 的内置函数和运算符进行交互。
详解Python中的__new__、__init__、__call__三个特殊方法
在Python中,有三个特殊方法被称为魔术方法:__new__、__init__和__call__。__new__方法用于创建一个类的实例,它在__init__方法之前被调用。__init__方法通常用于初始化一个类的实例,它在对象创建后立即调用。__call__方法使一个对象可被调用,就像调用一个函数一样。下面是一个示例代码来说明这三个方法的使用:
```python
class MyClass(object):
def __new__(cls, *args, **kwargs):
instance = super().__new__(cls)
# 在这里可以对实例进行一些初始化操作
return instance
def __init__(self, *args, **kwargs):
# 在这里进行实例的初始化操作
pass
def __call__(self, *args, **kwargs):
# 在这里定义对象被调用时的行为
pass
if __name__ == '__main__':
my_obj = MyClass()
my_obj() # 调用对象
```
在上面的代码中,__new__方法用于创建一个类的实例,并返回该实例。__init__方法用于初始化实例的属性。__call__方法定义了当对象被调用时的行为。这些特殊方法可以根据需要进行重写,以实现自定义的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [Python中的__new__、__init__、__call__三个特殊方法](https://blog.csdn.net/jiangjiang_jian/article/details/80024100)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [详解Python中的__new__、__init__、__call__三个特殊方法](https://blog.csdn.net/qq_15821487/article/details/119737869)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]