• Python的def __init__( ):函数


    在这里,我们要区分两个函数:

    第一种形式def __init__(self):

    这种形式在__init__方法中,只有一个self,指的是实例的本身,但是在方法的类部,包含三个属性:feature_index、threshold和alpha。它允许定义一个空的结构,当新数据来时,可以直接添加。实例化时,需要实例化之后,再进行赋值。

    def __init__(self):
        # 特征索引
        self.feature_index=None
        # 特征划分阈值
        self.threshold=None
        # 指示分类准确率
        self.alpha=None
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    第二种形式def __init__(self, 参数1,参数2,···,参数n):

    这种形式在定义方法时,就直接给定了三个参数feature_indexthresholdalpha,且属性值不允许为空。实例化时,直接传入参数。

    def __init__(self,feature_index,threshold,alpha):
        # 特征索引
        self.feature_index=feature_index
        # 特征划分阈值
        self.threshold=threshold
        # 指示分类准确率
        self.alpha=alpha
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    区别很明显,前者在__init__方法中,只有一个self,指的是实例的本身,但是在方法的类部,包含三个属性,feature_index、threshold和alpha。

    下面的这个即是在定义方法时,就直接给定了两个参数。

    针对这样的两个,之前不解的地方,是如何实例化,第二个很明显就是直接实例化时,传入相应的参数,而第一种,则需要实例化之后,对属性进行赋值。

    两者的区别:

    第一种的区别,他定义了这样一种类,他可以是一个空的结构,比如学生的表,当学生还没有进行考试时,他已经有了学生的姓名和成绩,当新的数据来的时候,可以直接添加进来。这个可以很方便的进行;

    而第二种,则需要必须传值,不允许为空。当然第二种对于已有数据的导入是很方便的,在语句上减少了很多。

    我们看一下第一种形式的实现方法:

    class Student:
        def __init__(self):  # 两者之间的区别
            self.name = None
            self.score = None
    
        def print_score(self):
            print("%s score is %s" % (self.name, self.score))
    
        def classify_grades(self):
            if self.score >= 80:
                return "A"
            elif self.score >= 70:
                return "B"
            else:
                return "C"
    
    student = Student()
    student.name = "sansan"
    student.score = 90
    
    student.print_score()
    print(student.classify_grades())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    我们接下来看一下第二类方法的实现:

    class Student:
        def __init__(self,name,score):  # 两者之间的区别
            self.name = name
            self.score = score
    
        def print_score(self):
            print("%s score is %s" % (self.name, self.score))
    
        def classify_grades(self):
            if self.score >= 80:
                return "A"
            elif self.score >= 70:
                return "B"
            else:
                return "C"
    
    student = Student('xiao ming',90)
    student.print_score()
    print(student.classify_grades())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    以上是一个很简单的,两者比较,两者都在上述代码中进行了简单的实现,自己进行相应的注释。

  • 相关阅读:
    M1(arm) Mac安装open3d
    http和https的区别,以及https涉及到的加密过程
    C/C++语言100题练习计划 77——区间问题(差分实现)
    gis:读取shp文件
    JavaScript扩展原型链浅析
    【Docker】本地镜像与私有库:发布、拉取,图文展示全过程
    【讲座笔记】基于 Apache Calcite 的多引擎指标管理最佳实践|CommunityOverCode Asia 2023 | 字节开源
    论文中常见的拟合散点验证图(R语言版)
    基于jquery+html开发的json格式校验工具
    mybaits入门
  • 原文地址:https://blog.csdn.net/wzk4869/article/details/126763188