objet python typecasting
Ive été en essayant de recherche comment passer la référence d'objet en python et le type de voter pour elle similaire à Java, mais pas de résultat. Je duno si ce sujet existe quelque part ici.
Mon problème est que je dois passer la référence de l'objet à un constructeur de la classe. Mais je duno comment transtypage de la référence à un objet. En java, mais j'ai de réaliser cela, mais je dois transférer le code pour le côté serveur.
merci beaucoup,
Jack
class SearchRectangle:
def __init__(self, lower_left_subgrid_x, lower_left_subgrid_y, rectangle_width, rectangle_height):
self.min_subgrid_x = int(lower_left_subgrid_x)
self.max_subgrid_x = int(self.min_subgrid_x + rectangle_width -1)
self.min_subgrid_y = int(lower_left_subgrid_y)
self.max_subgrid_y = int(self.min_subgrid_y + rectangle_height -1)
...blah
class SearchRectangleMultiGrid:
# parent rectangle should be a SearchRectangle instance
def __init__(self, parent_rectangle):
self.parent_rectangle = SearchRectangle()parent_rectangle
# test codes
test_rect = SearchRectangle(test_subgrid.subgrid_x, test_subgrid.subgrid_y, 18, 18)
print "\n\nTest SearchRectangle";
print test_rect.to_string()
print test_rect.sql_clause
test_rec_multi = SearchRectangleMultiGrid(test_rect)
print "\n\nTest SearchRectangleMulti"
test_rec_multi.parent_rectangle.to_string()
OriginalL'auteur Jack Wong | 2010-12-25
Vous devez vous connecter pour publier un commentaire.
Python est un typées dynamiquement langue et en tant que tel, il n'a pas beaucoup de sens de jeter quelque chose sauf si vous avez précisément besoin de ce type.
En Python, vous devez utiliser le Duck-Typing: http://en.wikipedia.org/wiki/Duck_typing
Donc au lieu d'essayer de convertir
parent_rectangle
à unSearchRectangle()
il vous suffit de tester siSearchRectangle()
a les propriétés dont vous avez besoin.Ou si vous voulez vraiment être sûr que vous aurez toujours une
SearchRectangle()
, utilisezisinstance
comme ceci:Cela pourrait être une bonne lecture pour vous: http://dirtsimple.org/2004/12/python-is-not-java.html
Il dépend de l'IDE, mais de nombreux soutenir le type de conseils donnés par le Sphinx
rtype
paramètre: sphinx-doc.org/domains.html?highlight=rtype#info-field-lists Et certains pourraient même prendre en charge le Google styleReturns
option: sphinx-doc.org/ext/...OriginalL'auteur Wolph
Il n'y a pas de raison de jeter quelque chose en python. Qu'essayez-vous de faire? Suffit d'utiliser l'objet comme vous le voulez bien, et si c'est pas du bon type, il échouera. Il n'y a pas une telle chose comme la coulée depuis les noms de variables n'ont pas un type associé.
OriginalL'auteur Falmarri
Plus d'explications:
Casting
est l'acte de prendre un pointeur/référence à un type d'objet, et de dire au compilateur "Ouais, je sais que c'est un toto de référence, mais s'il vous plaît faire semblant c'est une référence de la barre".Python n'ont pas de pointeurs/références faites dans ce sens (bien que dans un autre sens, tout ce qui est des références). En outre, le compilateur/interpréteur ne se soucie pas de ce que le type est à la première place. Par conséquent, le casting est à la fois impossible et inutile.
Donc dans votre exemple: sautez Simplement la conversion de type. Il va de toute façon. Et si ça ne marche pas. puis faire une demande sur ce problème.
OriginalL'auteur Lennart Regebro