__init__.storing的是哪些信息?
我在某个地方看到,__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 个回答
你可能把self.amount和amount搞混了。self.amount是和BankAccount这个类相关的一个变量,它是在创建这个类的实例时初始化的。所以,在你的类里面,self.amount的值是一样的。而amount是一个参数,它的值取决于你在调用函数时传入的具体数值。
可以看看这些链接了解更多:http://docs.python.org/2/tutorial/classes.html 和 http://www.voidspace.org.uk/python/articles/OOP.shtml#the-init-method
从你的问题来看,我觉得你对面向对象编程(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
。
在Python中,__init__()
是一个方法,当你创建一个类的实例时,这个方法会被调用。通常,这个方法用来初始化实例变量。初始化后,你就可以在其他方法中使用这些变量了。
关于self.amount
,它是一个实例变量(还有类变量)。换句话说,就是一个属性。
你的类是BankAccount
,每个银行账户应该有一个金额。这时候,实例变量就派上用场了!
当你创建一个实例时
myAccount = BankAccount(16.20)
会调用__init__()
方法(你可以在里面放一个print
来查看),它会把self.amount
设置为16.20
。
问 __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