__init__ 方法有没有什么例子来解释
时间: 2023-05-25 11:06:18 浏览: 52
当我们创建一个类的对象时,就会自动调用 __init__ 方法。这个方法允许我们定义对象创建时所需要的初始状态。下面是一个例子来解释 __init__ 方法:
```
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def bark(self):
print("Woof! My name is", self.name, "and I am", self.age, "years old.")
my_dog = Dog("Rufus", 3)
my_dog.bark()
```
在这个例子中,我们创建了一个名为 Dog 的类。在类中,我们定义了一个 __init__ 方法,该方法接受 name 和 age 两个参数,并将它们保存到实例属性 self.name 和 self.age 中。当我们创建一个新的实例(例如 my_dog)时,我们可以传递名字和年龄作为参数,这些参数将被传递给 __init__ 方法以初始化实例的属性。最后,在我们调用 bark() 方法时,my_dog 对象将打印出 "Woof! My name is Rufus and I am 3 years old." 这句话。
总的来说,__init__ 方法在类创建对象时允许我们设置对象所需的初始化状态,并且可以传递任意数量和类型的参数来初始化实例属性。
相关问题
__init__ 方法的有没有什么例子来解释
当Python类被实例化时,它的 __init__ 方法将被调用。这是一个特殊的方法,用于初始化类实例的属性。
以下是一个例子:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("John", 36)
print(p1.name) # Output: John
print(p1.age) # Output: 36
```
在上述例子中,我们定义了一个名为 Person 的类,它具有两个属性:name 和 age。在类中的 __init__ 方法中,我们通过将传递给它的参数分配给相应的属性来初始化这些属性。
在通过传递两个参数 "John" 和 36 实例化 Person 类之后,我们创建了一个名为 p1 的对象。然后,我们使用点运算符访问该对象的属性 name 和 age,并将它们打印到控制台上。
__new__和__init__方法的区别是什么?
__new__和__init__方法的区别在于:__new__方法负责对象的创建,而__init__方法负责对象的初始化。具体来说,__new__方法是在对象创建之前调用的,它返回一个新的对象实例,而__init__方法是在对象创建之后调用的,它负责对对象进行初始化操作。因此,__new__方法的返回值必须是一个对象实例,而__init__方法没有返回值。另外,__new__方法的第一个参数是cls,表示要创建的类,而__init__方法的第一个参数是self,表示要初始化的对象实例。
举个例子,假设我们有一个名为Person的类,它有两个属性name和age,我们可以通过__new__方法创建一个新的Person对象实例,然后通过__init__方法对其进行初始化:
```
class Person:
def __new__(cls, name, age):
print("__new__ method is called")
return super().__new__(cls)
def __init__(self, name, age):
print("__init__ method is called")
self.name = name
self.age = age
p = Person("Tom", 18)
```
在上面的例子中,我们重写了Person类的__new__方法和__init__方法。当我们创建一个新的Person对象实例时,首先会调用__new__方法创建一个新的对象实例,然后再调用__init__方法对其进行初始化。在__new__方法中,我们使用了super()函数调用了父类的__new__方法,返回一个新的对象实例。在__init__方法中,我们对对象实例的name和age属性进行了初始化。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)