Yes, you can preload the data in the __init__ method, but why would you want to do it?
Often you don’t want to preload the data due to the potentially large memory requirement and thus slower initialization. Also, you would use multiprocessing to load and process each batch (lazily) in the background while the model trains, so lazy loading is usually the preferred option.