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