我一直在阅读有关 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/