2013-07-12 9 views
5

Wiemy, że wszystko jest obiektem w Pythonie, a więc zawiera liczby całkowite. Czyli dir(34) nie jest zaskoczeniem, są dostępne atrybuty.Niepoprawne mylenie w składni w pythonach Integer

Moje zamieszanie wynika z następujących przyczyn, dlaczego wykonanie 34.__class__ powoduje błąd składni, gdy wiem, że 34 ma atrybut __class__. Ponadto, dlaczego powiązanie liczby całkowitej z nazwą, na przykład x, a następnie wykonanie x.__class__ daje oczekiwaną odpowiedź typu int?

+0

. jest używany dla kropki dziesiętnej. Nie można również wykonać '34()'. – dansalmo

Odpowiedz

12

Ponieważ 34.__class__ nie jest prawidłową liczbą zmiennoprzecinkową, co oznacza . w literałach numerycznych. Wypróbuj (34).__class__.

+1

Oh doh. Więc '.' jest składnią, która mówi pythonowi, gdy liczba jest zmiennoprzecinkową lub int? Dziękuję Ci! –

+0

Tak, jest to przecinek dziesiętny, gdy jest używany z liczbą. – kindall

+1

Należy również wziąć pod uwagę, że '1.e3' jest całkowicie poprawnym literałem float; jak można to odróżnić od członka "e3" int '1', jeśli oba były dozwolone? – abarnert