मुझे पाइथन सुपर() और विरासत और गुणों के साथ वास्तव में एक अजीब समस्या है। सबसे पहले, कोड:पायथन सुपर और सेटिंग पेरेंट क्लास प्रॉपर्टी
#!/usr/bin/env python3
import pyglet
import pygame
class Sprite(pyglet.sprite.Sprite):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.rect = pygame.Rect(0, 0, self.width, self.height)
self.rect.center = self.x, self.y
@property
def x(self):
return super().x
@x.setter
def x(self, value):
super(Sprite, self.__class__).x.fset(self, value)
self.rect.centerx = value
@property
def y(self):
return super().y
@y.setter
def y(self, value):
super(Sprite, self.__class__).y.fset(self, value)
self.rect.centery = value
यह ठीक काम करता है। हालांकि, मैं क्या चाहते हैं (मुझे क्या pythonic लगता है)
#super(Sprite, self.__class__).x.fset(self, value)
super().x = value
भले ही
super().x
मूल्य ठीक हो जाता है काम नहीं करता। इस मामले में एक्स सुपरसेट की एक संपत्ति है जो दोनों fset और fget परिभाषित है। तो यह क्यों काम नहीं करता है?
मैंने एक बग दायर किया है: http://bugs.python.org/issue14965 उम्मीद है कि यह जल्द ही हल हो जाएगा, इसलिए यह प्रश्न अब प्रासंगिक नहीं है। – darkfeline
"यह समर्थित नहीं है ... एक अच्छा पर्याप्त कारण" जैसा लगता है "क्योंकि यह बस है"। – simonzack
@ सिमोनज़ैक - मैंने कहा था कि मैं * कोशिश कर रहा था * उस तरह का उत्तर देने के लिए नहीं और सबसे अधिक संभवतः इसकी कार्यक्षमता के बारे में बता सकता हूं। – jdi