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


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

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

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

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

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

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

1 # student = Student("sansan", 90)
2 student = Student()
3 student.name= "sansan"
4 student.score = 90
5  
6 # susan = Student("sunny", 78)
7 susan = Student()
8 susan.name = "susan"
9 susan.score = 8

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

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

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

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

 1 class Student:
 2     def __init__(self):#两者之间的区别
 3         self.name = None
 4         self.score = None
 5  
 6     # def __init__(self, name, score):
 7     #     self.name = name
 8     #     self.score = score
 9  
10     def print_score(self):
11         print("%s score is %s" % (self.name, self.score))
12  
13     def get_grade(self):
14         if self.score >= 80:
15             return "A"
16         elif self.score >= 70:
17             return "B"
18         else:
19             return "C"
20  
21 # student = Student("sansan", 90)
22 student = Student()
23 student.name= "sansan"
24 student.score = 90
25  
26 # susan = Student("sunny", 78)
27 susan = Student()
28 susan.name = "susan"
29 susan.score = 8
30  
31 student.print_score()
32 susan.print_score()
33 print(susan.get_grade())
34 print(student.get_grade())

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

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM