如何在python中访问类对象属性

2024-05-19 01:35:01 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个方法叫做charge,它把total作为参数。当我打印出总计print(total)时,它会给我Price(currency='INR', excl_tax=Decimal('1000.00'), incl_tax=Decimal('1180.0000'), tax=Decimal('180.0000'))。我怎样才能从这里得到包括税在内的东西?你知道吗

视图.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\u tax,它应该是一个整数值,这样我就可以把它传递给client.payment.capture(card,total)。最好的方法是什么?你知道吗


Tags: selfnonereturnisdefpaymentcardcurrency

热门问题