Почему изображение Tkinter не отображается, если оно создано в функции?

Этот код работает:

import tkinter

root = tkinter.Tk()
canvas = tkinter.Canvas(root)
canvas.grid(row = 0, column = 0)
photo = tkinter.PhotoImage(file = './test.gif')
canvas.create_image(0, 0, image=photo)
root.mainloop()

Это показывает мне изображение.

Теперь этот код компилируется, но он не показывает мне изображение, и я не знаю почему, потому что это тот же код в классе:

import tkinter

class Test:
    def __init__(self, master):
        canvas = tkinter.Canvas(master)
        canvas.grid(row = 0, column = 0)
        photo = tkinter.PhotoImage(file = './test.gif')
        canvas.create_image(0, 0, image=photo)

root = tkinter.Tk()
test = Test(root)
root.mainloop()

Ответы на вопрос(2)

Ваш ответ на вопрос