🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #27996

Kontrola typów i wartości dla własności

#27996
From: Waldek M.
Date: Tue, 05 Apr 2011 06:14
35 lines
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-mail

Show 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