__init__.storing的是哪些信息?

1 投票
4 回答
556 浏览
提问于 2025-04-17 23:36

我在某个地方看到,__init__ 是在创建对象时用来存储信息的。那么,假设我有以下这段代码:

class BankAccount(object):
    def __init__(self, deposit):
        self.amount = deposit 

    def withdraw(self, amount):
        self.amount -= amount

    def deposit(self, amount):
        self.amount += amount

    def balance(self):
        return self.amount 

myAccount = BankAccount(16.20)

x = raw_input("What would you like to do?")

if x == "deposit":    
    myAccount.deposit(int(float(raw_input("How much would you like to deposit?"))))
    print "Total balance is: ", myAccount.balance()   
elif x == "withdraw":    
    myAccount.withdraw(int(float(raw_input("How much would you like to withdraw?"))))
    print "Total balance is: ", myAccount.balance()    
else:
    print "Please choose 'withdraw' or 'deposit'. Thank you."

那么,__init__ 到底在做什么或者存储了什么呢?我不太明白“self.amount”是什么,或者把它设为 deposit 有什么用。“self.amount” 在 __init__ 里面和在 withdraw 里面是一样的吗?我就是不太理解“self.amount” 是干嘛的。

4 个回答

0

你可能把self.amountamount搞混了。self.amount是和BankAccount这个类相关的一个变量,它是在创建这个类的实例时初始化的。所以,在你的类里面,self.amount的值是一样的。而amount是一个参数,它的值取决于你在调用函数时传入的具体数值。

可以看看这些链接了解更多:http://docs.python.org/2/tutorial/classes.htmlhttp://www.voidspace.org.uk/python/articles/OOP.shtml#the-init-method

2

从你的问题来看,我觉得你对面向对象编程(OOP)还不太熟悉。建议你先了解一下这个概念,以及它在Python中的实现方式。这里有个简单的入门链接:http://www.tutorialspoint.com/python/python_classes_objects.htm

然后你可以随意搜索一下你在那儿学到的新概念。

简单来说,直接回答你的问题:

  • 类就像是对象的模板;
  • 根据这个模板创建的对象叫做类的实例;
  • 对象可以有实例变量,用来存储每个实例特有的值;
  • 类可以定义一个构造函数,在创建类的实例时会调用这个构造函数。这个构造函数通常用来初始化实例变量。
  • 在Python中,类的所有方法都会把它们操作的实例作为一个参数,通常叫做self
  • 在Python中,__init__是构造函数的名字。

所以在Python中,当你调用myAccount.deposit(10)时,可以理解为这相当于BankAccount.deposit(myAccount, 10)。所以,self变量在你所有的四个方法中是“相同的”,在你的例子中,它被赋值为myAccount

3

在Python中,__init__()是一个方法,当你创建一个类的实例时,这个方法会被调用。通常,这个方法用来初始化实例变量。初始化后,你就可以在其他方法中使用这些变量了。

关于self.amount,它是一个实例变量(还有类变量)。换句话说,就是一个属性。

你的类是BankAccount,每个银行账户应该有一个金额。这时候,实例变量就派上用场了!

当你创建一个实例时

myAccount = BankAccount(16.20)

会调用__init__()方法(你可以在里面放一个print来查看),它会把self.amount设置为16.20

3

__init__ 是干什么的?它存储了什么?

每当你创建一个类的实例时,__init__ 就会被调用。这适用于所有类。通常在这个函数里,你会初始化所有的数据。在你的例子中,你创建了一个叫 amount 的成员数据,并把它的值设为传给函数的 deposit 参数。

我不明白 "self.amount" 是什么,为什么把它设为 = deposit 有什么作用。

语句 self.amount = deposit 有几个作用。它创建了一个名为 amount 的类成员数据,并把它的值设为 deposit 的值。

__init__ 下的 "self.amount" 和取款(withdraw)里的那个是一样的吗?

是的。

我就是不明白 "self.amount" 是干什么的。

它让你能够保存对象的数据。每个类都需要确定它需要哪些成员数据才能正常工作。在你的例子中,你只需要 amount 这个数据。如果你有一个叫 Employee 的类,它可能会像这样:

class Employee(object):
    def __init__(self, firstName, lastName, id, salary):
        self.firstName = firstName 
        self.lastName = lastName 
        self.id = id 
        self.salary = salary 

撰写回答