打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
python def __init__(self, name等多参数), def __init__(self)

最开始接触的都是这两个的区别;__init__(self) 初始化,__new__实例化方法,两者执行的顺序,先有实例,才能初始化。

之前一直对__init__(self)里面的参数很迷茫,一会这个地方看到别人这么写,一会看到别人那么写,自己也不知道,到底怎么回事,有哪些区别,今天对这个内容进行了学习。进行系统的分析了解,主要从他的实例化的区别,含义的区别进行区分两者之间的关系!

常见的两种类的定义方式如下:

class Student:def __init__(self):    #两者之间的区别    self.name = None    self.score = None

def __init__(self, name, score):    self.name = name    self.score = score

区别很明显,前者在__init__方法中,只有一个self,指的是实例的本身,但是在方法的类部,包含两个属性,name, score

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

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

# student = Student("sansan", 90)student = Student()student.name= "sansan"student.score = 90# susan = Student("sunny", 78)susan = Student()susan.name = "susan"susan.score = 78

即显示了两种实例化的方法, 注释的部分即是在创建的时候就直接传入参数

那么这两者的区别,在哪里?

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

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

# !usr/bin/env python# -*- coding:utf-8 _*-"""@file name: student.pyCreated on: 2020-9-03Author: CharlieThis program is just a test; you can run it.@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!"""import osimport subprocessimport sysclass Student:    def __init__(self):#两者之间的区别        self.name = None        self.score = None    # def __init__(self, name, score):    #     self.name = name    #     self.score = score    def print_score(self):        print("%s score is %d" % (self.name, self.score))    def get_grade(self):        if self.score >= 80:            return "A"        elif self.score >= 70:            return "B"        else:            return "C" # student = Student("sansan", 90)student = Student()student.name= "sansan"student.score = 90# susan = Student("sunny", 78)susan = Student()susan.name = "susan"susan.score = 78def student_info(): student.print_score() susan.print_score() student.print_score() #全局变量 student.name= "sansan" print(susan.get_grade()) print(student.get_grade()) #全局变量 student.name= "sansan"if __name__ == "__main__": student_info() 结果:pchui@ubuntu:~/work/RK3399/charlie$ python student.py sansan score is 90susan score is 78sansan score is 90BApchui@ubuntu:~/work/RK3399/charlie$

以上是一个很简单的,两者比较,

两者都在上述代码中进行了简单的实现,自己进行相应的注释

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python限定类属性的类属性:
一文看懂Python面向对象编程核心思想(Python学习与Django入门必看)
python中的类(Class)和实例(Instance)
【python学习笔记】python中的self理解
python装饰器--@property
python理解描述符(descriptor)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服