Python 简单类属性更新
我有一节课,我期待着:Python 简单类属性更新,python,class,oop,Python,Class,Oop,我有一节课,我期待着: print(rithesh.amount) = 150. 我该怎么做 这是我的密码: class Customer: total_amount = 0 def __init__(self, name, mob, email, amount=None): self.name = name self.mob = mob self.eamil = email def add_amount(self,
print(rithesh.amount) = 150.
我该怎么做
这是我的密码:
class Customer:
total_amount = 0
def __init__(self, name, mob, email, amount=None):
self.name = name
self.mob = mob
self.eamil = email
def add_amount(self, amount):
self.amount = amount
rithesh = Customer("Rithesh", "8896398598", "ritheshb1@gmail.com")
rithesh.add_amount(100)
rithesh.add_amount(50)
print(rithesh.amount)
发生的情况是,当您调用
add\u amount
时,您并没有将值添加到self.amount
中,您只是在设置它
只需将add_amount
的定义更改为:
self.amount = amount
致:
并添加到\uuuu init\uuu
方法中:
self.amount = 0
发生的情况是,当您调用
add\u amount
时,您并没有将值添加到self.amount
中,您只是在设置它
只需将add_amount
的定义更改为:
self.amount = amount
致:
并添加到\uuuu init\uuu
方法中:
self.amount = 0
您可以在
\uuuu init\uuuu
方法中将您的金额变量声明为0
。然后对您的add\u amount
方法做一个小改动
class Customer:
total_amount = 0
def __init__(self, name, mob, email, amount=None):
self.name = name
self.mob = mob
self.eamil = email
self.amount = 0
def add_amount(self, amount):
self.amount += amount
rithesh = Customer("Rithesh", "8896398598", "ritheshb1@gmail.com")
rithesh.add_amount(100)
rithesh.add_amount(50)
print(rithesh.amount)
输出
150
您可以在
\uuuu init\uuuu
方法中将您的金额变量声明为0
。然后对您的add\u amount
方法做一个小改动
class Customer:
total_amount = 0
def __init__(self, name, mob, email, amount=None):
self.name = name
self.mob = mob
self.eamil = email
self.amount = 0
def add_amount(self, amount):
self.amount += amount
rithesh = Customer("Rithesh", "8896398598", "ritheshb1@gmail.com")
rithesh.add_amount(100)
rithesh.add_amount(50)
print(rithesh.amount)
输出
150
我知道怎么做
我必须在初始化过程中声明值self.amount=0
class Customer:
total_amount = 0
def __init__(self, name, mob, email, amount=None):
self.name = name
self.mob = mob
self.eamil = email
self.amount = 0
def add_amount(self, amount):
self.amount += amount
rithesh = Customer("Ritehsh", "8892398598", "ritheshb1@gmail.com")
rithesh.add_amount(100)
rithesh.add_amount(50)
print(rithesh.amount)
因此,将输出作为print(rithesh.amount)=150得到了如何实现
我必须在初始化过程中声明值self.amount=0
class Customer:
total_amount = 0
def __init__(self, name, mob, email, amount=None):
self.name = name
self.mob = mob
self.eamil = email
self.amount = 0
def add_amount(self, amount):
self.amount += amount
rithesh = Customer("Ritehsh", "8892398598", "ritheshb1@gmail.com")
rithesh.add_amount(100)
rithesh.add_amount(50)
print(rithesh.amount)
因此,将输出作为print(rithesh.amount)=150在python中拥有属性的实际方法是使用@property decorator 例如,在您的课堂上:
class Customer:
total_amount = 0
def __init__(self, name, mob, email, amount=None):
self.name = name
self.mob = mob
self.eamil = email
@property
def add_amount(self):
return self.add_amount
@add_amount.setter
def add_amount(self, amount):
self.add_amount = amount
rithesh = Customer("Rithesh", "8896398598", "ritheshb1@gmail.com")
rithesh.add_amount = 150
print(rithesh.add_amount)
在python中拥有属性的实际方法是使用@property decorator 例如,在您的课堂上:
class Customer:
total_amount = 0
def __init__(self, name, mob, email, amount=None):
self.name = name
self.mob = mob
self.eamil = email
@property
def add_amount(self):
return self.add_amount
@add_amount.setter
def add_amount(self, amount):
self.add_amount = amount
rithesh = Customer("Rithesh", "8896398598", "ritheshb1@gmail.com")
rithesh.add_amount = 150
print(rithesh.add_amount)
将
=
更改为+=
。或者self.amount=self.amount+amount
。您的总金额变量不应该仅称为amount吗?或者,您的add\u amount方法增加total\u amount值,然后引用rithesh.total\u amount?在中声明self.amount=0
,在中声明+=add\u amount
@JaredSmith,除非OP事先初始化self.amount
,否则将不起作用。rithesh.add\u amount(150)
将=
更改为+=
。或者self.amount=self.amount+amount
。您的总金额变量不应该仅称为amount吗?或者,您的add\u amount方法增加total\u amount值,然后引用rithesh.total\u amount?在中声明self.amount=0
,在中声明+=add\u amount
@JaredSmith,除非OP事先初始化self.amount
,否则将不起作用。rithesh.add\u amount(150)
获取以下错误:回溯(最近一次调用):文件“C:\Users\Rithesh B\Desktop\test321\u simple-Copy.py”,第14行,在Rithesh.add\u amount(100)文件“C:\Users\Rithesh B\Desktop\test321\u simple-Copy.py”第11行,在add_amount self.amount+=amount AttributeError中:“Customer”对象没有属性“amount”,这将不起作用,因为在调用add_amount
时,self.amount
未退出。因此,执行self.amount+=amount
将引发AttributeError
。哦,我还没有看过\uuuu init\uuu
方法。我假设self.amount
已在\uuuu init\uuuu
中初始化。获取以下错误:回溯(最近一次调用):文件“C:\Users\Rithesh B\Desktop\test321\u simple-Copy.py”,第14行,在Rithesh.add\u amount(100)文件“C:\Users\Rithesh B\Desktop\test321\u simple-Copy.py”第11行,在add_amount self.amount+=amount AttributeError中:“Customer”对象没有属性“amount”,这将不起作用,因为在调用add_amount
时,self.amount
未退出。因此,执行self.amount+=amount
将引发AttributeError
。哦,我还没有看过\uuuu init\uuu
方法。我假设self.amount
已在\uuuu init\uuuu
中初始化。这是为usageThanks man的财产准备的。但我想把它作为实例方法。通过在初始化期间声明值self.amount=0。这是针对属性UsageHanks man的。但我想把它作为实例方法。通过在初始化过程中声明值self.amount=0。为什么arjit已经回答了您自己的问题?是的,正确,对于total calculation,您是正确的。但是,如果你需要正确的财产使用方式,请参见下面我的回答,为什么你要回答自己的问题,而arjit已经回答了?是的,正确,总的计算你是对的。但如果你需要正确的财产使用方式,请看下面我的答案