Sınıf üyelerime aşağıdaki gibi varsayılan değerler vermeli miyim:
class Foo:
num = 1
veya bunun gibi mi?
class Foo:
def __init__(self):
self.num = 1
Gelen bu soruya ben, her iki durumda da keşfetti
bar = Foo()
bar.num += 1
iyi tanımlanmış bir işlemdir.
İlk yöntemin bana bir sınıf değişkeni vereceğini, ikincisinin vermeyeceğini anlıyorum. Ancak, bir sınıf değişkenine ihtiyacım yoksa, ancak yalnızca örnek değişkenlerim için varsayılan bir değer ayarlamam gerekiyorsa, her iki yöntem de eşit derecede iyi mi? Veya biri diğerinden daha fazla 'pitonik' mi?
Fark ettiğim bir şey, Django eğitiminde Modelleri bildirmek için ikinci yöntemi kullandıklarıdır. Şahsen ben ikinci yöntemin daha zarif olduğunu düşünüyorum, ancak 'standart' yolun ne olduğunu bilmek istiyorum.
self.attr = attr or []
dahilinde yazın__init__
. Aynı sonucu elde ediyor (sanırım) ve hala net ve okunabilir.