Python - Objasnění typu proměnné

Joky

Python - Objasnění typu proměnné
« kdy: 14. 07. 2015, 10:33:48 »
Ahoj, spustím class 'foo', parametrem předám do funkce 'bar' proměnnou 'self', ve funkci 'bar' nastavím 'myvar = self.myvar'
Kód: [Vybrat]
def bar(self):
   myvar = self.myvar

class foo(object):
   myvar = 1
   def__init__(self):
      bar(self)

foo()

Nastavil jsem lokální proměnnou 'myvar', jejíchž obsah jsem získal z proměnné která je prosím jakého typu ?
myvar = self.myvar # Dosaďte správný komentář

Děkuji za pomoc


poustevnik

Re:Python - Objasnění typu proměnné
« Odpověď #1 kdy: 14. 07. 2015, 10:46:13 »
"myvar" nastavuješ na "1" takže potom, jestliže je setována z té funkce "bar", tak je typu "int"

jinak python je dynamicky typovaný jazyk, proměnná může postupně nabývat hodnoty různých typů podle toho co jí setneš

aaa

Re:Python - Objasnění typu proměnné
« Odpověď #2 kdy: 14. 07. 2015, 10:51:24 »
myvar = self.myvar # aktualne int

holly

Re:Python - Objasnění typu proměnné
« Odpověď #3 kdy: 14. 07. 2015, 10:53:29 »
>>> print type(self.myvar)

Joky

Re:Python - Objasnění typu proměnné
« Odpověď #4 kdy: 14. 07. 2015, 10:53:39 »
Jasně, to jo, díky.. Já se ale ptal na něco jiného, položil jsem dotaz blbě, sorry :-( Zeptám se jinak.
Když 'myvar' je lokální proměnná a self.myvar není ani lokální ani globální, jaká tedy je ? Díky


Re:Python - Objasnění typu proměnné
« Odpověď #5 kdy: 14. 07. 2015, 10:57:08 »
členská

Joky

Re:Python - Objasnění typu proměnné
« Odpověď #6 kdy: 14. 07. 2015, 11:01:54 »
členská
Díky, a jaký je správný anglický výraz pro členskou proměnnou ?

JS

Re:Python - Objasnění typu proměnné
« Odpověď #7 kdy: 14. 07. 2015, 11:02:46 »
Když 'myvar' je lokální proměnná a self.myvar není ani lokální ani globální, jaká tedy je ? Díky

Ne ze by na pojmenovani prilis zalezelo, ale v takovem pripade je to atribut tridy (nikoli ovsem instance!). Nekdy se jim rika staticke cleny, ale to neni idealni pojmenovani (v dynamicky typovanem jazyce).

T


Jann

Re:Python - Objasnění typu proměnné
« Odpověď #9 kdy: 14. 07. 2015, 11:58:41 »
Když 'myvar' je lokální proměnná a self.myvar není ani lokální ani globální, jaká tedy je ? Díky

Ne ze by na pojmenovani prilis zalezelo, ale v takovem pripade je to atribut tridy (nikoli ovsem instance!). Nekdy se jim rika staticke cleny, ale to neni idealni pojmenovani (v dynamicky typovanem jazyce).

Označení „statický člen” je IMHO javismus, vůbec bych to nepoužíval, ani v Javě.

podlesh

Re:Python - Objasnění typu proměnné
« Odpověď #10 kdy: 14. 07. 2015, 18:23:49 »
Ne ze by na pojmenovani prilis zalezelo, ale v takovem pripade je to atribut tridy (nikoli ovsem instance!). Nekdy se jim rika staticke cleny, ale to neni idealni pojmenovani (v dynamicky typovanem jazyce).

Označení „statický člen” je IMHO javismus, vůbec bych to nepoužíval, ani v Javě.
Omlouvám se za off-topic, ale tady pozor: "statický člen" a "atribut třídy" jsou dvě VELMI odlišné věci a je potřeba pamatovat na to, že Java atributy třídy nemá!

JS

Re:Python - Objasnění typu proměnné
« Odpověď #11 kdy: 14. 07. 2015, 22:33:20 »
Omlouvám se za off-topic, ale tady pozor: "statický člen" a "atribut třídy" jsou dvě VELMI odlišné věci a je potřeba pamatovat na to, že Java atributy třídy nemá!

Nechci se hadat, ale myslim, ze je to hloupost (a pro jistotu jsem jsem ted precetl 3 posty na SO na toto tema). Ty nazvy evidentne nemaji pevne definice, takze kategoricky tvrdit, ze jsou zcela odlisne je prehnane. Ano, atribut v Jave je neco trochu jineho nez atribut v Pythonu, nicmene myslim, ze to pouzivani v Pythonu predchazelo.

JS

Re:Python - Objasnění typu proměnné
« Odpověď #12 kdy: 14. 07. 2015, 22:38:44 »
Označení „statický člen” je IMHO javismus, vůbec bych to nepoužíval, ani v Javě.

(Lidi naucte se trochu psat; jeden tu tvrdi, ze se neco nema pouzivat, ale aspon mohl napsat, co se tedy pouzivat ma misto toho, dalsi zase pise, ze se neco lisi ale uz nenapise proc si to mysli.)

Takze, co bys misto toho pouzival? To "staticky", jak predpokladam vis, pochazi od klicoveho slova static, ktere pochazi z C. Nejsem si jisty, zda je to tedy skutecne "javismus" (mozna to ma i C++, ted z hlavy nevim) a pripada mi to jako vhodny nazev.

opera

Re:Python - Objasnění typu proměnné
« Odpověď #13 kdy: 14. 07. 2015, 23:12:22 »
Ne ze by na pojmenovani prilis zalezelo, ale v takovem pripade je to atribut tridy (nikoli ovsem instance!). Nekdy se jim rika staticke cleny, ale to neni idealni pojmenovani (v dynamicky typovanem jazyce).

Označení „statický člen” je IMHO javismus, vůbec bych to nepoužíval, ani v Javě.
Omlouvám se za off-topic, ale tady pozor: "statický člen" a "atribut třídy" jsou dvě VELMI odlišné věci a je potřeba pamatovat na to, že Java atributy třídy nemá!

"staticky clen" a "atribut tridy" jsou samozrejme totez...

Re:Python - Objasnění typu proměnné
« Odpověď #14 kdy: 15. 07. 2015, 08:01:36 »
"staticky clen" a "atribut tridy" jsou samozrejme totez...
Citace
In some languages, class variables and class methods are either statically resolved, not via dynamic dispatch, or their memory statically allocated at compile time (once for the entire class, as static variables), not dynamically allocated at run time (at every instantiation of an object). In other cases, however, either or both of these are dynamic. For example, if classes can be dynamically defined (at run time), class variables of these classes are allocated dynamically when the class is defined, and in some languages class methods are also dispatched dynamically.

Thus in some languages, static member variable or static member function are used synonymously with or in place of "class variable" or "class function", but these are not synonymous across languages. These terms are commonly used in Java, C#, and C++, where class variables and class methods are declared with the static keyword, and referred to as static member variables or static member functions.
https://en.wikipedia.org/wiki/Class_variable