как получить доступ к атрибутам объекта класса в Python - PullRequest
1 голос
/ 20 июня 2019

, поэтому у меня есть метод с именем charge , который принимает в качестве аргумента сумму.Когда я распечатываю сумму print(total), это дает мне Price(currency='INR', excl_tax=Decimal('1000.00'), incl_tax=Decimal('1180.0000'), tax=Decimal('180.0000')).Как получить доступ, скажем, от этого incl_tax?

views.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

Prices.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).Каков наилучший способ сделать это?

1 Ответ

0 голосов
/ 20 июня 2019

Вы можете получить доступ к элементу в этом списке следующим образом, где 2 - это значение для incl_tax:

print(total[2])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...