de-vraag
  • Jautājumi
  • Tagi
  • Lietotāji
Paziņojumi
Apbalvojumi
Reģistrācija
Pēc reģistrēšanās jums tiks paziņots par atbildēm un komentāriem uz jūsu jautājumiem.
Pieslēgties
Ja jums jau ir konts, piesakieties, lai pārbaudītu jaunus paziņojumus.
Būs atlīdzība par pievienotajiem jautājumiem, atbildēm un komentāriem.
Vairāk
Avots
Rediģēt
Andrew Walker
Andrew Walker
Question

Vai Python ir iespējami statiskie klases mainīgie?

Vai Python ir iespējams izmantot statiskus klases mainīgos vai metodes? Kāda sintakse ir nepieciešama, lai to izdarītu?

1797 2008-09-16T01:46:36+00:00 3
 Georgy
Georgy
Rediģēts jautājums 22pēcpusdienari5t jūnijā 2019 в 12:09
Programmēšana
oop
class
python
static
class-variables
Popular videos
Static Variable or Class Variable - Python OOPs 04
Static Variable or Class Variable - Python OOPs 04
pirms 1 gada
Python Tutorials - Class method and Static method Decorators | Instance and Class Variable
Python Tutorials - Class method and Static method Decorators | Instance and Class Variable
pirms 3 gadiem
Python static class variable | www.minhinc.com | Nov 27 2019
Python static class variable | www.minhinc.com | Nov 27 2019
pirms 2 gadiem
Pirmā stunda Python - mainīgie, datu tipi, datu ievade un izvade, matemātiskās operācijas.
Pirmā stunda Python - mainīgie, datu tipi, datu ievade un izvade, matemātiskās operācijas.
pirms 2 gadiem
Mācāmies programmēt ar Python #2 - mainīgie, piešķiršanas un citi operatori, sazarošanās un cikli
Mācāmies programmēt ar Python #2 - mainīgie, piešķiršanas un citi operatori, sazarošanās un cikli
pirms 6 mēnešiem
11.klases Mainīgo tipi
11.klases Mainīgo tipi
pirms 2 gadiem
Ievads programmēšanā | #4 Programmēšanas valoda Python
Ievads programmēšanā | #4 Programmēšanas valoda Python
pirms 3 gadiem
Java un Android kurss | #6 Mainīgie un darbības ar tiem (JAVA)
Java un Android kurss | #6 Mainīgie un darbības ar tiem (JAVA)
pirms 3 gadiem
Mainīgie darbam ar Java
Mainīgie darbam ar Java
pirms 4 gadiem
07 mainīgie zīmējumā
07 mainīgie zīmējumā
pirms 2 gadiem
Learn Python by Building Five Games - Full Course
Learn Python by Building Five Games - Full Course
pirms 2 gadiem
Rezumejums
Rezumejums
pirms 4 gadiem
Coding Minecraft On Windows Using Python - Getting Started
Coding Minecraft On Windows Using Python - Getting Started
pirms 1 gada
Java un Android kurss | #1 Ievads datorikā
Java un Android kurss | #1 Ievads datorikā
pirms 3 gadiem
Snake Game In Python - Python Beginner Tutorial
Snake Game In Python - Python Beginner Tutorial
pirms 1 gada
How to install Python 3.10.0 on Windows 10
How to install Python 3.10.0 on Windows 10
pirms 7 mēnešiem
Ievads programmēšanā | #1 Pamata recepte
Ievads programmēšanā | #1 Pamata recepte
pirms 3 gadiem
PHP pamācība #1
PHP pamācība #1
pirms 8 gadiem
« Iepriekšējais
Nākamais »
Šim jautājumam ir 1 atbildi angļu valodā, lai tos izlasītu ieiet savā kontā.
Solution / Answer
Blair Conrad
Blair Conrad
16priekšpusdienari1t septembrī 2008 в 1:51
2008-09-16T01:51:06+00:00
Vairāk
Avots
Rediģēt
#8460420

Mainīgie, kas deklarēti klases definīcijā, bet ne metodē, ir klases vai statiskie mainīgie:

>>> class MyClass:
...     i = 3
...
>>> MyClass.i
3 

Kā norāda @millerdev, tas rada klases līmeņa i mainīgo, bet tas atšķiras no jebkura gadījuma līmeņa i mainīgā, tāpēc varētu būt

>>> m = MyClass()
>>> m.i = 4
>>> MyClass.i, m.i
>>> (3, 4)

Tas atšķiras no C++ un Java, bet ne tik ļoti no C#, kur statiskajam loceklim nevar piekļūt, izmantojot atsauci uz instance.

Skatiet Python pamācību par klasēm un klases objektiem.

@Steve Johnson jau ir atbildējis par statiskajām metodēm, kas arī dokumentētas sadaļā "Iebūvētās funkcijas" Python bibliotēkas atsaucē.

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...

@beidy iesaka classmethods, nevis staticmethod, jo tad metode kā pirmo argumentu saņem klases tipu, bet es joprojām esmu mazliet neskaidrs par šīs pieejas priekšrocībām salīdzinājumā ar staticmethod. Ja arī jums ir, tad, iespējams, tam nav nozīmes.

 Arne
Arne
Rediģēta atbilde 16priekšpusdienari1t jūlijā 2019 в 6:06
Built-in Functions — Python 3.10.4 documentation
docs.python.org
Built-in Functions — Python 3.10.4 documentation
docs.python.org
9. Classes — Python 3.10.4 documentation
docs.python.org
1777
0
 emb
emb
16priekšpusdienari1t septembrī 2008 в 2:02
2008-09-16T02:02:45+00:00
Vairāk
Avots
Rediģēt
#8460421

Es personīgi izmantoju klases metodi, kad man bija nepieciešama statiska metode. Galvenokārt tāpēc, ka kā argumentu es saņemu klasi.

class myObj(object):
   def myMethod(cls)
     ...
   myMethod = classmethod(myMethod) 

vai izmantot dekoratoru

class myObj(object):
   @classmethod
   def myMethod(cls)

Statiskām īpašībām.. Tās laiks jums apskatīt kādu python definīciju.. mainīgais vienmēr var mainīties. Ir divu veidu mainīgie un nemainīgie mainīgie.. Ir arī klases atribūti un instances atribūti... Nekas līdzīgs statiskajiem atribūtiem java un c++ izpratnē.

Kāpēc lietot statisko metodi pitoniskā nozīmē, ja tai nav nekādas saistības ar klasi! Ja es būtu jūsu vietā, es vai nu izmantotu klases metodi, vai definētu metodi neatkarīgi no klases.

 emb
emb
Rediģēta atbilde 16pēcpusdienari1t septembrī 2008 в 11:29
15
0
 willurd
willurd
16priekšpusdienari1t septembrī 2008 в 2:05
2008-09-16T02:05:49+00:00
Vairāk
Avots
Rediģēt
#8460422

Statiskās metodes pitonā sauc par classmethods. Aplūkojiet šādu kodu

class MyClass:

    def myInstanceMethod(self):
        print 'output from an instance method'

    @classmethod
    def myStaticMethod(cls):
        print 'output from a static method'

>>> MyClass.myInstanceMethod()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unbound method myInstanceMethod() must be called [...]

>>> MyClass.myStaticMethod()
output from a static method

Ievērojiet, ka, izsaucot metodi myInstanceMethod, mēs saņemam kļūdu. Tas ir tāpēc, ka šī metode ir jāizsauc šīs klases instancē. Metode myStaticMethod ir iestatīta kā klases metode, izmantojot dekoratoru @classmethod.

Tikai tā, ka mēs varētu izsaukt myInstanceMethod klasei, nododot klases gadījumu, piemēram, šādi:

>>>> MyClass.myInstanceMethod(MyClass())
izvads no gadījuma metodes
Andrii Abramov
Andrii Abramov
Rediģēta atbilde 12priekšpusdienari2t jūlijā 2017 в 10:23
13
0
Pievienot jautājumu
Kategorijas
Viss
Tehnoloģija
Kultūra / atpūta
Dzīve / Māksla
Zinātne
Profesionāls
Uzņēmējdarbība
Lietotāji
Visi
Jauns
Populārs
1
mohidil qodirova
Reģistrēts pirms 1 dienas
2
Jasur Fozilov
Reģistrēts pirms 2 dienām
3
Zuxriddin Muydinov
Reģistrēts pirms 2 dienām
4
Денис Анненский
Reģistrēts pirms 5 dienām
5
365
Reģistrēts pirms 1 nedēļas
BG
CS
DA
DE
EL
ES
FI
FR
HU
ID
IT
JA
KO
LV
NL
PL
PT
RU
TR
ZH
© de-vraag 2022
Avots
stackoverflow.com
saskaņā ar licenci cc by-sa 3.0 ar attiecinājumu