class Image:
def __init__(self, path: str):
self.path: str = path
class Window:
image: Image # instance variable without default
def __init__(self):
self.fish: str = "123"
def build(self, path):
self.image = Image(path)
window1 = Window()
window1.build('path1')
window2 = Window()
window2.build('path2')
print(window1.image.path)
print(window2.image.path)
print(window1.image.path)
# Only downside I can see: two errors when attempt to use as a class variable
# print(Window.image) # not flagged by PyCharm
# print(Window.fish) # flagged by PyCharm
# Not a big problem for me since I don't often use Class Variables and maybe ClassVar will be supported in future
Y2xhc3MgSW1hZ2U6CiAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aDogc3RyKToKICAgICAgICBzZWxmLnBhdGg6IHN0ciA9IHBhdGgKCgpjbGFzcyBXaW5kb3c6CiAgICBpbWFnZTogSW1hZ2UgICAgIyBpbnN0YW5jZSB2YXJpYWJsZSB3aXRob3V0IGRlZmF1bHQKCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi5maXNoOiBzdHIgPSAiMTIzIgoKICAgIGRlZiBidWlsZChzZWxmLCBwYXRoKToKICAgICAgICBzZWxmLmltYWdlID0gSW1hZ2UocGF0aCkKCgp3aW5kb3cxID0gV2luZG93KCkKd2luZG93MS5idWlsZCgncGF0aDEnKQoKd2luZG93MiA9IFdpbmRvdygpCndpbmRvdzIuYnVpbGQoJ3BhdGgyJykKCnByaW50KHdpbmRvdzEuaW1hZ2UucGF0aCkKcHJpbnQod2luZG93Mi5pbWFnZS5wYXRoKQpwcmludCh3aW5kb3cxLmltYWdlLnBhdGgpCgojIE9ubHkgZG93bnNpZGUgSSBjYW4gc2VlOiB0d28gZXJyb3JzIHdoZW4gYXR0ZW1wdCB0byB1c2UgYXMgYSBjbGFzcyB2YXJpYWJsZQojIHByaW50KFdpbmRvdy5pbWFnZSkgICAgICMgbm90IGZsYWdnZWQgYnkgUHlDaGFybQojIHByaW50KFdpbmRvdy5maXNoKSAgICAgICMgZmxhZ2dlZCBieSBQeUNoYXJtCiMgTm90IGEgYmlnIHByb2JsZW0gZm9yIG1lIHNpbmNlIEkgZG9uJ3Qgb2Z0ZW4gdXNlIENsYXNzIFZhcmlhYmxlcyBhbmQgbWF5YmUgQ2xhc3NWYXIgd2lsbCBiZSBzdXBwb3J0ZWQgaW4gZnV0dXJlCg==