python - 如何拥有默认对象属性并可以选择设置它?

标签 python object methods properties

我一直在阅读有关 setting object properties 的内容,但我很困惑,并没有尝试成功。

我想创建一个新对象。即 Thissle = yt_video()

然后,如果我运行 Thissle.url 我想要一个随机选择的 url,并且我希望可以选择将自己的 url 放在括号中 ThiSTLe.url("http...") 或者如果我使用 Thissle.url = "http..." 我不会得到任何输出

class yt_video (object):

    def __init__(self):
        self.__url = self.url

    @property
    def url (self): #returns a random url from the two
        url1 = 'https://youtu.be/WaGRTixwkSQ'
        url2 = 'https://www.youtube.com/playlist?list=PL6FhCd_HO_AD-22-Csv-vYlhLoKlAY3Zt'
        self.__url = random.choice([url1, url2])
        logger.debug('Running test on url...%s',self.__url)
        return self.__url
    @url.setter
    def url(self, value):
        self.__url = value

现在我使用 Thissle.url 获得随机 url,并且可以创建该对象 - 但我无法手动设置该值。没有任何返回

最佳答案

要使用 setter 属性,您应该分配给该属性,而不是尝试调用它。

video = yt_video()
video.url = 'http://....'  # <---
<小时/>

更新

url 属性始终返回随机 url。目前无法在类外部访问 __url 属性。

我建议 getter、setter 只需返回/设置属性即可。

例如:

class yt_video(object):

    def __init__(self):
        self.set_random_url()

    def set_random_url(self):
        url1 = 'https://youtu.be/WaGRTixwkSQ'
        url2 = 'https://www.youtube.com/playlist?list=...'
        self.__url = random.choice([url1, url2])

    @property
    def url(self):
        return self.__url

    @url.setter
    def url(self, value):
        self.__url = value

video = yt_video()
video.url = 'http://example.com'
print(video.url)

关于python - 如何拥有默认对象属性并可以选择设置它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43970982/

相关文章:

javascript - 有人可以向我解释一下为什么这段代码返回 1

javascript - 合并包含对象数组的对象

java - 递归方法返回并打印 String 的 Int 数

java - 定义一个与其所在类同名的枚举

python - 为什么我会收到这个(显然)不寻常的 AttributeError : 'bytes' object has no attribute '_all_strings' ? 有没有办法解决它?

python - 如何在使用 djanago-allauth 发出 post_save 信号后发送电子邮件确认邮件

python - 如何使用 pygtk 在窗口中包含图像?

python - 如何创建可访问单个数据集的 Google BigQuery 服务帐户?

PHP 比较对象 - 奇怪的行为

javascript - 如何使用动态数据循环遍历链式方法?