__init __。存储什么信息?

时间:2014-03-24 05:15:12

标签: python class object init self

我在某处写了__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”是什么或者如何使它=存款做任何事情。 __init__下的“self.amount”与withdraw下的“self.amount”相同吗?我只是不明白“self_amount”的作用。

4 个答案:

答案 0 :(得分:3)

在Python中,__init__()是在创建类的实例时调用的方法。此方法通常用于初始化实例变量。初始化后,您可以在其他方法中使用它们。

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

您的课程为BankAccount,每个银行帐户都应有一笔金额。当实例变量变得有用时!

创建实例时

myAccount = BankAccount(16.20)

调用__init__()方法,(您可以在内置print来查看此方法),并将self.amount设置为16.20

答案 1 :(得分:3)

__init__做什么或存储什么?

只要您构造类的实例,就会调用 __init__。这适用于所有课程。通常在此函数中初始化所有数据。在您的特定情况下,您正在创建名为amount的成员数据,并将其指定为与传递给函数的deposit参数相同。

我不明白"self.amount"是什么或者= deposit做了什么。

A 声明self.amount = deposit完成了一些事情。它创建名为amount的类的成员数据,并将其指定为deposit的值。

"self.amount"下的__init__是否与撤销中的"self.amount"相同?

A 是。

我只是不了解amount做了什么。

A 它允许您捕获对象的数据。每个类都需要找出正常工作所需的成员数据。在您的情况下,您需要的唯一数据是Employee。如果您有一个名为class Employee(object): def __init__(self, firstName, lastName, id, salary): self.firstName = firstName self.lastName = lastName self.id = id self.salary = salary 的类,它可能类似于:

{{1}}

答案 2 :(得分: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 :(得分:0)

您可能会将 self.amount 金额混淆。 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