Article View: pl.comp.lang.python
Article #27996Kontrola typów i wartości dla własności
From: Waldek M.
Date: Tue, 05 Apr 2011 06:14
Date: Tue, 05 Apr 2011 06:14
35 lines
1995 bytes
1995 bytes
Cześć,
Mam pytanie odnośnie własności (właściwości? jak by tu dobrze przetłumaczyć
'property'?) w Pythonie (używam 3.2).
Zbudowałem sobie klasę z własnością "foo", w sposób następujący:
class bar:
def __init__(self):
self._foo = [1,2,3,4]
@property
def foo(self):
print("Getter")
return self._foo
@foo.setter
def foo(self, value):
print("Setter")
self._foo = value
Chciałbym wprowadzić kontrolę rozmiaru tej tablicy/listy, jak i wkładanych
do niej wartości.
b = bar()
b.foo = [2,4,5,1] # tutaj mogę wprowadzić kontrolę za pomocą settera
b.foo[1] = "zasmażka" # tutaj już jest problem
Domyślam się, że w tej drugiej opcji wołany jest raczej getter,
zwracający referencję do tablicy, w której jest ustawiana stosowna wartość.
Czy można w jakiś sposób kontrolować przypadek nr 2, a jeśli tak,
to w jaki? Myślałem o użyciu jakiegoś własnego typu zamiast
listy i kontrolowanie typów na jej poziomie, ale to spory 'overkill'.
Wszelkie konstruktywne pomysły i linki mile widziane.
Pozdrawiam,
Waldek
Technical Details
Message-ID:
<y4f0sfs7c4ca.dlg@localhost.localdomain>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news2.ipartners.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news2.ipartners.pl!not-for-mail From: "Waldek M." <wm@localhost.localdomain> Newsgroups: pl.comp.lang.python Subject: Kontrola typów i wartości dla własności Date: Tue, 5 Apr 2011 08:14:03 +0200 Organization: Mojito.pl Lines: 35 Message-ID: <y4f0sfs7c4ca.dlg@localhost.localdomain> NNTP-Posting-Host: 89.174.106.129 Mime-Version: 1.0 X-Trace: news2.ipartners.pl 1301984038 74883 89.174.106.129 (5 Apr 2011 06:13:58 GMT) X-Complaints-To: abuse@ipartners.pl NNTP-Posting-Date: 5 Apr 2011 06:13:58 GMT X-Antivirus: avast! (VPS 110404-1, 2011-04-04), Outbound message X-Antivirus-Status: Clean User-Agent: 40tude_Dialog/2.0.15.1pl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit