我是靠谱客的博主 友好芒果,最近开发中收集的这篇文章主要介绍Python中 __init__的通俗解释当调用类时: 总结:why __init__?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

初学python,对与__init__方法和普通def name类方法产生了疑惑。

既然都是类方法,为什么要多此一举写个__init__呢?

当调用类时:

只要其所在的类被实例化了,__init__方法就会被执行。

 相对的,我们都知道,类里面的方法,如果没有被调用到,它是不会被执行到的,而这个__init__方法却不需要明确调用即可被执行。

1.使用__init__方法

我们创建了一个叫做“人类”(Person)的类别,他有俩个必要属性(property):性别(gender)和年龄(age)

class Person:
    def _init_(self,name,age):
         self.name=name
         self.age=age

   

 运行结果:

 可以看到,当我输入

p1=Person()

程序报错了,因为要创建一个人类新成员,你就必须输入性别和年龄这俩个必要选项。

而当我输入

p2=Person('James', 10)

 

有了_init_函数,每次我们创建人类这个类别的新的成员(Instance)时,我们就必须赋予gender和age这俩个参数--否则新的成员不能称作为“人类”

2.不使用__init__方法

是不是一定要使用_init_方程呢?

当然不是,但是,没有了这个方程,类别和成员的概念就变得稍许模糊。

下面我们创建一个class Student,里面包含def info()方法

class Student: 
        def info(self,name,age):
        self.name=name
        self.age=age

这个类没有_init_方程,因此,创建新成员stu1时,我们不需要输入任何的“属性”参数

stu1=Student()

这也导致了这个类定义的模糊--这个类别下的新成员stu1到底是什么?

反而,当我们在创建新成员试图输入“名字”和“年龄”这俩个“属性”时,程序报错了。

stu1=Student('mary',10)

 因为,我们创建了一个我们对它毫无认知的新成员stu1

但是,这个类里有一个叫做info的方法,并且它有两个输入变量“name”和‘age’

我们可以尝试调用这个方程把stu1的name和age提出来

stu1=Student()
stu1.info('mary',10)
stu1.name
stu1.age

 总结:why __init__?

如果不使用__init__,当我们为类传递参数时,类是无法识别这个参数是传递给哪个方法的,因此会报错,更无法进行调用,此时为了调用这种方法,我们得先写一行代码实例化,再写一行代码把参数传入某方法中,最后写一行代码进行调用这样过于繁琐。

最后看一个例子,感受加入__init__代码的简洁性

假如我们定义一个box类,有width,height,depth三个属性,以及计算体积的方法

solution 1


class Box:
    def setdimension(self,width,height,depth):
        self.width=width
        self.height=height
        self.depth=depth

    def getvolume(self):
        return self.width*self.height*self.depth

b=Box()
b.setdimension(10,20,30)
print(b.getvolume())

solution 2

class Box:
    def __init__(self,width,height,depth):
        self.width = width
        self.height = height
        self.depth = depth

    def getvolume(self):
        return self.width*self.height*self.depth

b=Box(20,30,40)
print(b.getvolume())

reference:Python中 __init__的通俗解释是什么? - 知乎

最后

以上就是友好芒果为你收集整理的Python中 __init__的通俗解释当调用类时: 总结:why __init__?的全部内容,希望文章能够帮你解决Python中 __init__的通俗解释当调用类时: 总结:why __init__?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部