2010-04-14 8 views
1

Je suis un Noob Python.python lier un type à une variable

Je crée une classe comme suit:

class t1: 
    x = '' 
    def __init__(self, x): 
     self.x = x 

class t2: 
    y = '' 
    z = '' 
    def __init__(self, x, y, z): 
     self.y = t1.__init__(x) 
     self.z = z 

Maintenant, contrairement à C++ ou Java, je ne lie pas le type de données à y en écrivant la définition de classe. C'est seulement parce que le code du constructeur est tel qu'il montre que y est de type t1. Peut-on lier un type de données en déclarant y?

Répondre

6

Non Les variables en Python n'ont pas de types - y n'a pas de type. A tout moment, y fait référence à un objet, et cet objet a un type. Ce:

y = '' 

se fixe y à un objet de type str. Vous pouvez le modifier plus tard pour faire référence à un objet d'un type différent. y lui-même n'a pas de type intrinsèque. Pour plus d'informations, voir Fredrik Lundh's excellent "Reset your brain" article.

(Soit dit en passant, ceci: self.y = t1.__init__(x) est un morceau de code plutôt étrange que vous vouliez dire self.y = t1(x).?)

+0

non je voulais dire t1 .__ init __ (x) sans l'affectation. self.y = t1 (x) a aussi du sens. merci –

+0

* objet de type 'str' * vous voulez dire. – SilentGhost

+0

@SilentGhost: Merci - corrigé. – RichieHindle

3

Il est hors de portée, mais s'il vous plaît noter:

class A(object): 
    x = None 

En Dans ce contexte, x est une variable de classe, pas une variable d'instance et est partagée par chaque instance. Il est couramment utilisé dans le borg pattern.

class A(object): 
    def __init__(self, x): 
     self.y = None 
     self.x = x 

Ici, self.y et self.x sont des variables d'instance.

Questions connexes