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


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

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

From Peter Otten <__peter__@web.de>
Newsgroups de.comp.lang.python
Subject Re: [Python-de] Was ist an dieser Klasse falsch?
Date 2020-07-30 10:25 +0200
Organization None
Message-ID <mailman.335.1596097535.9580.python-de@python.org> (permalink)
References <hofcgiFjp5jU1@mid.individual.net> <hofcq6Fk3c6U1@mid.individual.net> <2346874.32mHK6UKXk@palindrom>

Show all headers | View raw


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.

Back to de.comp.lang.python | Previous | NextPrevious in thread | Next 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