Discuss / Python / 关于__init__的理解

关于__init__的理解

Topic source

机修贾森

#1 Created at ... [Delete] [Delete and Lock User]

在看到这一章之前,Student类我一般习惯这么写:

>>> class Student:
    def init(self,name,score):
        self.name = name
        self.score= score
    def print_score(self):
        print('%s:%s' % (self.name,self.score))

实例化和调用:

>>> std1 = Student()
>>> std1.init('Ian',96)
>>> std1.print_score()
Ian:96

再对比老师的代码:

class Student():
    def __init__(self,name,score):
        self.name = name
        self.score = score
    def print_score(self):
        print('%s:%s' % (self.name,self.score))

实例化和调用:

>>> std1 = Student('Ian',96)
>>> std1.print_score()
Ian:96

区别就在于init和init,其实这是两个完全不同的东西。init就是类内的一个方法,用来实例化对象std1;但是init,是Student类内的一个带参数的初始化方法,是针对Student类本身的。这就好比你要装修房子:第一种方法就是你管工程队借工具,然后按照自己的需求来装修;第二种方法就是你把需求告诉工程队,然后人家按照你的需求来完成施工。

不知道理解的对不对~

机修贾森

#2 Created at ... [Delete] [Delete and Lock User]

第一个是init,第二个是(下划线下划线)init(下划线下划线)...

000JC嚓

#3 Created at ... [Delete] [Delete and Lock User]

__init__

ksven

#4 Created at ... [Delete] [Delete and Lock User]

init就是一个普通的赋值方法,没实例化student之前还不能调用(那当然),而且实例化之后可以多次调用。“用来实例化对象std1”这句话不合适,这个普通方法的作用只是赋值,不能叫做实例化。 init 是实例化方法(构造方法),在实例化student的时候自动调用,之后就不再调用(对这个已经实例化的对象来说)。 前者是你买了个毛坯房,然后你再自己装修,甚至装修的不满意还能推到重来 后者是你直接买了个装修好的房子。你能再装修,但是房子已经不用再买一次了


  • 1

Reply