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

标签 python oop data-structures

所以我有一个名为charge的方法,它以总计作为参数。当我打印出总计 print(total) 时,它会给出 Price(currency='INR', excl_tax=Decimal('1000.00'), incl_tax=Decimal('1180.0000'),tax=十进制('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

价格.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 的值:

打印(总计[2])

关于python - 如何在Python中访问类对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56676308/

相关文章:

java - Runtime如何选择外部类方法和父类(super class)方法的调用方式?

JavaScript 原型(prototype)与实践中的 this

algorithm - 是否有任何保留位置的方法来展平二叉树?

Python:根据其他数据帧的条件创建列

python - 将对象移动到继承的模型

javascript - Google Closure 绑定(bind)/解决 this 关键字的问题

c# - 在添加字典之前检查字典中是否存在键的最佳方法?

string - 拓扑排序在算法中的正确使用

python - 使用 BeautifulSoup 4 和 Python 解析 HTML

python - 根据列值过滤多索引数据帧,删除级别内的所有行