Python类将覆盖先前的初始化,而不是进行新的初始化

问题描述 投票:0回答:1

老实说,我什至不知道该怎么称呼这个错误。

def create_vimeo_objects_details_DTO_thumbnail(number=5): 
    max_widths = []
    test_thumbnail = []
    for i in range(number):
        new_width = randint(0,2540)
        max_widths.append(new_width)
        dto_thumbnail = {
            'Thumbnail' : {
                'link' : '',
                'width' : new_width
            }
        }
        test_thumbnail = test_thumbnail + [VimeoObjectDetailsDTO(dto_thumbnail).Thumbnail]
    print('test thumbnail: ', [a.width for a in test_thumbnail])

dto_thumbnail是类的一部分,必须从请求(字典)中进行初始化

class VimeoObjectDetailsDTO:

    files = []
    pictures = None
    duration = None

    class FileDto:
        width = None
        height = None
        link = ''
        quality = ''

    class Pictures:
        sizes = []

    class Thumbnail:
        width = None
        link = ''

    def __init__(self, response):
        if 'files' in response: self.files = response['files']
        if 'pictures' in response: self.pictures = response['pictures']
        if 'duration' in response: self.duration = response['duration']
        if 'FileDto' in response:
            if 'width' in response['FileDto']: self.FileDto.width = response['FileDto']['width']
            if 'link' in response['FileDto']: self.FileDto.link = response['FileDto']['link']
            if 'height' in response['FileDto']: self.FileDto.height = response['FileDto']['height']
            if 'quality' in response['FileDto']: self.FileDto.quality = response['FileDto']['quality']
        if 'Pictures' in response:
            if 'sizes' in response['Pictures']: self.Pictures.sizes = response['Pictures']['sizes']
        if 'Thumbnail' in response:
            if 'width' in response['Thumbnail']: self.Thumbnail.width = response['Thumbnail']['width']
            if 'link' in response['Thumbnail']: self.Thumbnail.link = response['Thumbnail']['link']

当我执行此功能时,例如:测试缩略图:[1893、1893、1893、1893、1893]

但是当我打印max_widths时,我会得到正确的-不同的数字

我该如何使该函数返回/正确打印VimeoObjectDetailsDTO.Thumbnails? (我是否使用“ +”或附加都没关系)

python class init
1个回答
1
投票
内部类的合法用途并不多,这当然不是合理的。此外,这些类没有任何方法,它们可能是字典,甚至根本不存在,例如Pictures

无论如何,您想要拥有实例属性,而不是类属性,因此应在__init__中创建它们。

© www.soinside.com 2019 - 2024. All rights reserved.