Tek bir anlamı çift çizgi Python nesne adı daha önce
Bu kez ve herkes için açıklığa kavuşturmak istiyorum. Birisi bir nesnenin adı daha önce de altını çiziyor önde gelen Python ile sahip olmanın tam anlamını açıklayabilecek olan var mı? Ve bir çift bir tek lider arasındaki farkı açıklar çizgi de. Ayrıca, bunun anlamı, söz konusu nesne bir değişken, bir fonksiyon, bir yöntem olup aynı kalacak mı vs. mi?
CEVAP
Tek Çizgi
Adları, önde gelen bir alt çizgi ile bir sınıfta, sadece öznitelik veya yöntem özel olmak üzere diğer programcılar için belirtmek için. Ancak, hiçbir özel isim kendisi ile yapılır.
PEP-8 alıntı:
_single_leading_underscore: "İç Kullanım" göstergesi. zayıf E. g.
from M import *
ile başlayan nesneleri al çizgi.
Alt Çizgi (Ad Değiştirme) Çift
Herhangi bir tanımlayıcı formu
__spam
(en az iki lider altını çiziyor, en fazla bir eğik çizgi) sözel olarak değiştirildi_classname__spam
nereyeclassname
geçerli bir sınıf adı ile önde gelen bir alt çizgi(ler) çıkartılır. Bu ütüleme yapılır olmadan, ekonomik sözdizimsel pozisyon tanımlayıcı, yani kullanılabilir tanımlamak için sınıf-özel örnek ve sınıf değişkenleri, metotları, değişkenleri depolanan bütünsel ve hatta değişkenler saklı durumda. diğer sınıfları Özel bu sınıf.
Ve aynı sayfada bir uyarı:
Adı bozma amaçlanan dersleri vermek kolay bir yolu tanımlamak için “özel” örnek değişkenleri ve yöntemleri hakkında endişelenmenize gerek kalmadan örnek değişkenleri tarafından tanımlanan türetilmiş sınıfları veya mucking ile örnek değişkenleri tarafından kodu dışında sınıf. Bozma kuralları çoğunlukla kazaları önlemek için tasarlanmıştır; ya da özel kabul edilen bir değişken erişim değiştirmek için kararlı bir ruh için mümkün olduğunu unutmayın.
Örnek
>>> class MyClass():
... def __init__(self):
... self.__superprivate = "Hello"
... self._semiprivate = ", world!"
...
>>> mc = MyClass()
>>> print mc.__superprivate
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: myClass instance has no attribute '__superprivate'
>>> print mc._semiprivate
, world!
>>> print mc.__dict__
{'_MyClass__superprivate': 'Hello', '_semiprivate': ', world!'}
Git checkout çift çizgi anlamı...
Neden Standart girdiden okuma satır Py...
** (Çift yıldız) ve * (yıldız) Python ...
Neden Python kodunu daha hızlı bir işl...
Nasıl bir Python nesne özniteliği vars...