防止用户在 Python 中创建某些类的对象

我正在为 twitter 创建一个包装器 Python API,


例如:


search_tweets(**kwargs)

此 API 返回一个 Tweet 对象。推文类看起来像:


class Tweet:

    def __init__(self, tweet, favorites, impressions, engagements, **kwargs):

        """ Create a new Tweet Object with field values """

        self.impressions = impressions

        self.favorites = favorites

        self.tweet = tweet

        self.engagements = engagements

        vars(self).update(kwargs)



    def retweet():

       """ Retweet this tweet """

Tweet 对象将暴露给用户,因为 Tweet 对象将由 search_tweets API 返回,用户可以在此对象上调用 retweet 等方法,但我不希望用户显式创建此对象。


我如何表示 Tweet 对象不应由用户创建,而只能对其进行操作?


ABOUTYOU
浏览 218回答 2
2回答

芜湖不芜

您可以使用单下划线约定(PEP 文档)。_single_leading_underscore:弱“内部使用”指标。例如 from M import * 不导入名称以下划线开头的对象。Python 中没有什么是“私有的”,无需跳过一堆障碍。你能做的最好的事情就是遵循惯例并很好地评论课程。

烙印99

您可以将Tweet类设为函数的本地类,例如:def search_tweets(**kwargs):     class Tweet:         ...因此,用户可以retweet()对从search_tweets()函数返回的对象调用和其他方法,但Tweet由于缺乏人类可读的名称,无法轻松地手动创建对象。但是这种方法的缺点是Tweet从其他 API 函数创建s也同样困难。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python