Sobes.tech
Junior — Middle

V čem se liší vlastnosti třídy od vlastností konkrétního objektu v Pythonu?

sobes.tech AI

Odpověď od AI

Vlastnosti třídy (atributy třídy) v Pythonu patří samotné třídě a jsou společné pro všechny její instance. Jsou definovány uvnitř těla třídy, ale mimo metody. Pokud změníte vlastnost třídy, tato změna bude viditelná ve všech objektech, které tuto vlastnost nezpřesnily.

Vlastnosti konkrétního objektu (atributy instance) patří pouze tomuto objektu a jsou obvykle definovány uvnitř metody __init__ nebo dynamicky. Jsou jedinečné pro každou instanci a neovlivňují ostatní objekty třídy.

Příklad:

class MyClass:
    class_attr = 10  # atribut třídy

    def __init__(self, value):
        self.instance_attr = value  # atribut instance

obj1 = MyClass(1)
obj2 = MyClass(2)

print(obj1.class_attr)      # 10
print(obj2.class_attr)      # 10
print(obj1.instance_attr)   # 1
print(obj2.instance_attr)   # 2

MyClass.class_attr = 20
print(obj1.class_attr)      # 20
print(obj2.class_attr)      # 20

obj1.instance_attr = 100
print(obj1.instance_attr)   # 100
print(obj2.instance_attr)   # 2