>>> class Potato(object):
... def method(self, spam):
... print self, spam
...
>>> spud = Potato()
İşleri: Niçin ** kendimizi bir yöntem haline getiremiyoruz?
>>> Potato.method(spud, **{'spam': 123})
<__main__.Potato object at 0x7f86cd4ee9d0> 123
Çalışmaz
:>>> Potato.method(**{'self': spud, 'spam': 123})
# TypeError
Ama neden olmasın? Ben 'kendi' sadece bir kongre olduğunu düşündüm ve bu argüman hakkında asıl olarak özel bir şey yoktu?
Bu ilginç bir soru. Bir düşünce: Bu kurala göre, "benlik", "ben" diye adlandırılmamış, 1'inci argümandır. Belki de ismiyle açılmayı beklemez, ancak – slezica
pozisyonuna göre aynı soruna sahip olursunuz: Potato.method (self = spud, spam = 123) '. Uyarısı gerçekten sorun değil. –
Tam olarak, çünkü 'kendini' sadece bunu yapamayacağınız bir sözleşmedir. "Self" isminin özel bir durumu olmadığı için, Python yalnızca argüman listesinde hangi argümanın "self" olduğunu bilir, çünkü argüman listesinde * ilk * olur, bu yüzden konumsal olarak iletilmelidir. – BrenBarn