前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python类中初始化形式:def __init__(self)和def __init__(self, 参数1,参数2,,,参数n)区别

python类中初始化形式:def __init__(self)和def __init__(self, 参数1,参数2,,,参数n)区别

原创
作者头像
Python学习者
发布2023-06-07 16:48:45
4310
发布2023-06-07 16:48:45
举报
文章被收录于专栏:Python学习者

这两种初始化形式,就类似于C++类中的构造函数。

形式1: definit(self)

代码语言:python
代码运行次数:0
复制
class Student_Grade: 
    def __init__(self):  # 类似于c++中的默认构造函数
        self.name = None
        self.grade = None
         
    def print_grade(self):
        print("%s grade is %s" % (self.name,self.grade))
 
 
s1 = Student()  # 创建对象s1
s1.name = "Tom"
s1.grade = 8

s2 = Student()  # 创建对象s2
s2.name = "Jerry"
s2.grade = 7
 
s1.print_grade()
s2.print_grade() 

这种形式在init方法中,只有一个self,指的是实例的本身,但是在方法的类部,包含两个属性,name, grade。

它允许定义一个空的结构,当新数据来时,可以直接添加。

实例化时,需要实例化之后,再进行赋值。

形式2:definit(self, 参数1,参数2,···,参数n)

代码语言:python
代码运行次数:0
复制
class Student_Grade:
    def __init__(self, name, grade): 
        self.name = name
        self.grade = grade
 
    def print_grade(self):
        print("%s grade is %s" % (self.name,self.grade))
 
s1 = Student("Tom", 8)   # 创建对象s1
s2 = Student("Jerry", 7)  # 创建对象s2
 
s1.print_grade()
s2.print_grade()

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

总结

1、self是形式参数,当执行s1 = Student(“Tom”, 8)时,self等于s1;当执行s2 = Student(“sunny”, 7)时,self=s2。

2、两种方法的区别在于定义函数时属性赋值是否允许为空和实例化时是否直接传入参数

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档