Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #5656

Re: [Python-de] Was ist an dieser Klasse falsch?

Path csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From "Peter Heitzer" <peter.heitzer@rz.uni-regensburg.de>
Newsgroups de.comp.lang.python
Subject Re: [Python-de] Was ist an dieser Klasse falsch?
Date 30 Jul 2020 08:50:49 GMT
Lines 70
Message-ID <hoffv8FkljtU1@mid.individual.net> (permalink)
References <hofcgiFjp5jU1@mid.individual.net> <hofcq6Fk3c6U1@mid.individual.net> <2346874.32mHK6UKXk@palindrom> <mailman.335.1596097535.9580.python-de@python.org>
Mime-Version 1.0
Content-Type text/plain; charset=UTF-8
Content-Transfer-Encoding 8bit
X-Trace individual.net VnAWf6UXG6jq98nNAxNHxA4UAyAnLjX6+qvG2OCR6M6COhte7Mi/0qTfni
X-Orig-Path not-for-mail
Cancel-Lock sha1:OIaC6opaxADL/R/FHW9MOWWXOmk=
User-Agent tin/2.4.1-20161224 ("Daill") (UNIX) (Linux/4.9.0-12-amd64 (x86_64))
Xref csiph.com de.comp.lang.python:5656

Show key headers only | View raw


Peter Otten <__peter__@web.de> wrote:
>Am Do Juli 30 2020, 07:56:54 schrieb Peter Heitzer:
>> Peter Heitzer <peter.heitzer@rz.uni-regensburg.de> wrote:
>> >Ich habe ein Verständnisproblem mit folgendem kleinen Stück Javacode:
>> >
>> >import java.util.*;
>> >
>> >public class P extends Properties {
>> >
>> >        public String getProperty(String p) {
>> >        
>> >                return super.getProperty(p,"de");
>> >        
>> >        }
>> >        
>> >        public static void main(String[] args) {
>> >        
>> >                P x=new P();
>> >                x.setProperty("a","b");
>> >                System.out.println(x.getProperty(args[0]));
>> >        
>> >        }
>> >
>> >}
>> >
>> >Es wird ohne Fehler übersetzt. Wenn man es aber startet bricht es mit
>> >Stackoverflow ab. Ich kann mir nicht erklären, was hier passiert.
>> >Die abgeleitete Klasse P überschreibt die Methode getProperty(String) und
>> >ruft darin die Originalmethode getProperty(String,String) auf.
>> >Das Laufzeitverhalten mit Stackoverflow schaut aber für mich so aus, als
>> >ob die überschriebene Methode sich selbst aufruft.
>> >Wer kann mir das Verhalten erklären?
>> 
>> Sorry falsche Gruppe.

>Meine Java-Kenntnisse sind angestaubt, aber ich versuch mich mal an einer 
>"Übersetzung":

>class Properties:
>    def getPropertyDefault(self, name, default):
>            try:
>                return self.getProperty(name)
>            except ValueError:
>                return default
>    def getProperty(self, name):
>        return 42

>class P(Properties):
>    def getProperty(self, name):
>        return super().getPropertyDefault(name, "de")

>try:
>    print(P().getProperty("foo"))
>except Exception as err:
>    print(err)

>$ python3 property.py
>maximum recursion depth exceeded while calling a Python object

>Wenn diese Übersetzung korrekt ist besteht das Problem möglicherweise in den 
>unterschiedlichen Signaturen, du überlädst die eine die dann intern von der 
>anderen wieder aufgerufen wird.
Zu der Erkenntnis hat mich ein Kollege auch gerade gebracht. Durch meine Überladung
der einparametrigen Methode getProperty(String) ist in der Superklasse die ursprüngliche
Implementierung nicht mehr sichtbar und wenn die Originalmethode mit 2 Parametern
intern die einparametrige aufruft (was in der Quelle klar erkennbar ist) dann wird
meine überladene Methode aufgerufen, welche sich dann rekursiv selber aufruft.

-- 
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de

Back to de.comp.lang.python | Previous | NextPrevious in thread | Find similar


Thread

Was ist an dieser Klasse falsch? "Peter Heitzer" <peter.heitzer@rz.uni-regensburg.de> - 2020-07-30 07:51 +0000
  Re: Was ist an dieser Klasse falsch? "Peter Heitzer" <peter.heitzer@rz.uni-regensburg.de> - 2020-07-30 07:56 +0000
    Re: [Python-de] Was ist an dieser Klasse falsch? Peter Otten <__peter__@web.de> - 2020-07-30 10:25 +0200
      Re: [Python-de] Was ist an dieser Klasse falsch? "Peter Heitzer" <peter.heitzer@rz.uni-regensburg.de> - 2020-07-30 08:50 +0000

csiph-web