问题描述
我读到某处__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”,或者如何使它=存款可以做什么。
是“self.amount”下__init__
一样的一个下withdraw
?
我只是不了解“ self_amount”的作用。
1楼
在Python中, 是在创建类的实例时调用的方法。 此方法通常用于初始化实例变量。 初始化后,您可以在其他方法中使用它们。
关于self.amount
,它是一个实例变量(也有类变量)。
换句话说是一个属性。
您的班级是BankAccount
,每个银行帐户应有一个金额。
那是实例变量变得有用的时候!
创建实例时
myAccount = BankAccount(16.20)
会调用__init__()
方法(您可以通过在其中放入print
来查看此方法),它将使用16.20
设置self.amount
。
2楼
问 __init__
在做什么或存储什么?
一个 __init__
当你构建类的一个实例被调用。
这适用于所有类。
通常会在此函数中初始化所有数据。
在您的特定情况下,您正在创建一个称为amount
的成员数据,并将其分配为与传递给该函数的deposit
参数相同。
问:我不知道什么是"self.amount"
或如何使它= deposit
做什么。
A语句self.amount = deposit
完成了几件事。
它创建一个名为amount
的类的成员数据,并将其分配为deposit
的值。
问 __init__
下的"self.amount"
是否与"self.amount"
相同?
是的 。
问:我只是不了解"self.amount"
作用。
A它允许您捕获对象的数据。
每个类都需要弄清楚它需要正确工作的成员数据。
就您而言,您唯一需要的数据就是amount
。
如果您有一个名为Employee
的类,则它可能类似于:
class Employee(object):
def __init__(self, firstName, lastName, id, salary):
self.firstName = firstName
self.lastName = lastName
self.id = id
self.salary = salary
3楼
根据您的问题,我认为您是面向对象编程(OOP)的新手。 我建议阅读有关它以及如何在Python中实现的信息。 这是一个简短的起点: :
然后,随时搜索您在那里学到的新概念。
简而言之,直接回答您的问题:
- 类是对象模板;
- 实现这样的模板的对象称为类的实例。
- 对象可以具有实例变量,这些实例变量存储每个实例特定的值。
- 类可以定义构造函数,在创建类的实例时会调用该构造函数。 这些构造函数通常用于初始化实例变量。
-
在Python中,一个类的所有方法都将其工作的实例作为参数,按惯例命名为
self
-
在Python中,
__init__
是构造函数的名称
因此,在Python中,当您调用myAccount.deposit(10)
,可以说它等效于BankAccount.deposit(myAccount, 10)
。
因此,是的,在所有四个方法中, self
变量都是“相同的”,并且在您的示例中,它是使用myAccount
分配的。
4楼
您可能将self.amount与amount混淆了。 self.amount是与BankAccount类关联的变量,在创建该类的实例时会对其进行初始化。 因此,self.amount在类中的每个地方都是相同的,但是amount是一个参数,因此它取决于您在函数调用时提供的值。 阅读: : 和