python - 以 Stripe 的方式实例化 Python 类
问题描述
我想知道,我有一个随机的愿望,想了解 Stripe 如何以如此简洁的方式实例化它的类:
例如,
from __future__ import absolute_import, division, print_function
import os
import stripe
stripe.api_key = os.environ.get("STRIPE_SECRET_KEY")
print("Attempting charge...")
resp = stripe.Charge.create(
amount=200,
currency="usd",
card="tok_visa",
description="customer@gmail.com",
)
print("Success: %r" % (resp))
我正在以类似的类继承方式工作,但是,我只能使以下工作:
resp = myexamplepackage.Quantity().list()
即,我必须先调用 Quantity 类,Quantity()
然后才能使用类方法...
我的Quantity()
课看起来像这样:
class Quantity(
APIClient,
ListAPIMixin
):
OBJECT_NAME = "Quantity"
def __init__(
self,
*args,
**kwargs
):
super(Quantity, self).__init__()
def list(self, *args, **kwargs):
return super(Quantity, self).list(
path='{}/{}'.format(self.realm, self.resource)
)
注意list()
调用被传递到 ListAPIMixin 类,但我不确定这在这里是否重要。
我在init () 调用中玩弄了许多方法,但如果没有一些额外的繁重工作,我不确定这是可能的:
def __init__(
self,
*args,
**kwargs
):
super(Quantity, self).__init__()
self()
def __init__(
self,
*args,
**kwargs
):
super(Quantity, self)()
但似乎没有什么能像条带似乎能够实现的那样工作。
解决方案
stripe.Charge
从 继承其create
功能stripe.api_resources.abstract.creatable_api_resource.CreateableAPIResource
,并在那里用@classmethod
. 这个装饰器允许在没有类的现有实例的情况下调用被装饰的方法,而是调用类对象本身。可以在StackAbuse中找到一个很好的示例解释。
推荐阅读
- css - vuejs 中的 Nuxt 渲染双 CSS
- docker - Docker问题创建目录
- node.js - Gatsby - 构建控制台警告:MaxListenersExceededWarning
- r - 通过 RDCOMClient 包通过 Outlook 在 R 版本 3.6.0 中发送电子邮件
- php - PHP 警告:66192047 字节的 POST 内容长度超过了 8388608 字节的限制
- java - 带有 Map 的 Java8 流?
- ionic3 - 滚动内容在 iOS ionic 3 中不起作用
- c# - 如何修复asp范围内的多个数据库上下文
- testng - 在运行时更新套件名称
- c - 为什么阅读后不调用 fstab64?这会是一个问题吗?