For these banners it very well could be a classmethod. The reason why it's not is because you could, for example, create a new type of banner that, say, had a text field or something that the admin filled in when creating the new banner, and this text field could maybe be part of the rendered banner. In that case, you need the banner instance in the `generate_banner_code` method.

None of the current banners use that functionality, and instead rely on variations for that stuff, but I like have the ability to use it in the future.

As for testing if the variation belongs to that specific text banner, I could maybe add that check in but I'm not convinced there's a danger of that happening. I mean, next you'll have me checking the type of the passed-in value! :P

(If you disagree I'd be happy to add that check in, though)