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已经回答了?是的,正确,总的计算你是对的。但如果你需要正确的财产使用方式,请看下面我的答案