我有使用Python超()和繼承的特性真奇怪問題。首先,代碼:Python的超級設置父類屬性
#!/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
這工作正常。不過,我想什麼(什麼似乎Python的我)
#super(Sprite, self.__class__).x.fset(self, value)
super().x = value
即使
super().x
得到值精細不起作用。 x在這種情況下是定義了fset和fget的超類的屬性。那爲什麼它不工作?
我已經提交了一個錯誤:http://bugs.python.org/issue14965希望這很快解決,這樣這個問題不再是相關的。 – darkfeline
「它不支持...一個足夠好的理由」聽起來像「因爲它就是」。 – simonzack
@simonzack - 我確實說過我*試圖*不給出這樣的答案,並解釋我可能會對其功能最多。 – jdi