python - 如何在python中访问类对象属性
问题描述
所以我有一个名为charge的方法,它以 total 作为参数。当我打印出总计print(total)
时,它给了我Price(currency='INR', excl_tax=Decimal('1000.00'), incl_tax=Decimal('1180.0000'), tax=Decimal('180.0000'))
。我如何访问让我们说 incl_tax ?
视图.py
class PaymentDetailsView(CorePaymentDetailsView):
def handle_payment(self, order_number, total, **kwargs):
razorpay_ref = Facade().charge(
order_number,
total,
card=self.request.POST[RAZORPAY_TOKEN],
description=self.payment_description(order_number, total, **kwargs),
metadata=self.payment_metadata(order_number, total, **kwargs))
source_type, __ = SourceType.objects.get_or_create(name=PAYMENT_METHOD_RAZORPAY)
source = Source(
source_type=source_type,
currency=settings.RAZORPAY_CURRENCY,
amount_allocated=total.incl_tax,
amount_debited=total.incl_tax,
reference=razorpay_ref)
self.add_payment_source(source)
self.add_payment_event(PAYMENT_EVENT_PURCHASE, total.incl_tax)
门面.py
class Facade(object):
def __init__(self):
pass
@staticmethod
def get_friendly_decline_message(error):
return 'The transaction was declined by your bank - please check your bankcard details and try again'
@staticmethod
def get_friendly_error_message(error):
return 'An error occurred when communicating with the payment gateway.'
def charge(self,
order_number,
total,
card,
currency=settings.STRIPE_CURRENCY,
description=None,
metadata=None,
**kwargs):
print("card")
print(card)
print("total")
print(total)
print(type(total))
# print(getattr(self, 'incl_tax'))
client = razorpay.Client(auth=("key", "pass"))
client.payment.capture(card, total)
return card
价格.py
class TaxNotKnown(Exception):
"""
Exception for when a tax-inclusive price is requested but we don't know
what the tax applicable is (yet).
"""
class Price(object):
"""
Simple price class that encapsulates a price and its tax information
Attributes:
incl_tax (Decimal): Price including taxes
excl_tax (Decimal): Price excluding taxes
tax (Decimal): Tax amount
is_tax_known (bool): Whether tax is known
currency (str): 3 character currency code
"""
def __init__(self, currency, excl_tax, incl_tax=None, tax=None):
self.currency = currency
self.excl_tax = excl_tax
if incl_tax is not None:
self.incl_tax = incl_tax
self.is_tax_known = True
elif tax is not None:
self.incl_tax = excl_tax + tax
self.is_tax_known = True
else:
self.incl_tax = None
self.is_tax_known = False
def _get_tax(self):
return self.incl_tax - self.excl_tax
def _set_tax(self, value):
self.incl_tax = self.excl_tax + value
self.is_tax_known = True
tax = property(_get_tax, _set_tax)
def __repr__(self):
if self.is_tax_known:
return "%s(currency=%r, excl_tax=%r, incl_tax=%r, tax=%r)" % (
self.__class__.__name__, self.currency, self.excl_tax,
self.incl_tax, self.tax)
return "%s(currency=%r, excl_tax=%r)" % (
self.__class__.__name__, self.currency, self.excl_tax)
def __eq__(self, other):
"""
Two price objects are equal if currency, price.excl_tax and tax match.
"""
return (self.currency == other.currency and
self.excl_tax == other.excl_tax and
self.incl_tax == other.incl_tax)
我的目标是提取 incl_tax 这应该是一个整数值,所以我可以将它传递给client.payment.capture(card,total)
. 最好的方法是什么?
解决方案
您可以使用以下内容访问该列表中的元素,其中 2 是 的值incl_tax
:
print(total[2])
推荐阅读
- c++ - 在 gcc 上附加带有资源的二进制文件
- c# - dataGridView1 不显示指定表中的数据
- facebook - Facebook ImagePicker 没有会员头衔
- facebook - Facebook 的 Graph API - 关系状态信息不再可用?
- powershell - 使用 Invoke-Sqlcmd 在 Powershell 中删除数据库告诉我 DB 正在使用中,即使它不是
- eclipse - Eclipse Photon 连接到 Internet 但不是软件仓库
- qt - 信号指向结构中的插槽
- node.js - 使用 MongoDB 2.6.12 更新深度嵌入的文档
- sql - 在 SQL Server 中使用 IF 循环打印警告语句
- kubernetes - 将节点端口添加到令人兴奋的 istio 服务