@classmethod og @staticmethod
Definer klassemetoder og statiske metoder med passende decorators.
@classmethod og @staticmethod er en gratis leksjon i Python Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Python Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Python Academy inneholder totalt 4 leksjoner.
Innledning
Instans kontra klasse kontra statisk
class Demo:
def instance(self): return 'instance'
@classmethod
def class_m(cls): return f'class: {cls.__name__}'
@staticmethod
def static_m(): return 'static'
d = Demo()
print(d.instance())
print(Demo.class_m())
print(Demo.static_m())@classmethod som fabrikk
class Date:
def __init__(self, y,m,d): self.y,self.m,self.d=y,m,d
@classmethod
def today(cls):
from datetime import date
d = date.today()
return cls(d.year, d.month, d.day)
def __repr__(self): return f'{self.y}-{self.m}-{self.d}'
print(Date.today())@classmethod med arv
class Animal:
@classmethod
def create(cls, name):
return cls(name)
def __init__(self, name): self.name = name
class Dog(Animal): pass
d = Dog.create('Rex')
print(type(d).__name__, d.name)@staticmethod for hjelpefunksjoner
class MathHelper:
@staticmethod
def clamp(value, lo, hi):
return max(lo, min(hi, value))
print(MathHelper.clamp(15, 0, 10))
print(MathHelper.clamp(-5, 0, 10))@staticmethod kontra modulfunksjon
class Validator:
@staticmethod
def is_email(s): return '@' in s and '.' in s
print(Validator.is_email('user@example.com'))
print(Validator.is_email('not-an-email'))Kalle fra en instans
class C:
@classmethod
def who(cls): return cls.__name__
@staticmethod
def pi(): return 3.14
c = C()
print(c.who())
print(c.pi())Klassemetode for singletoner
class Singleton:
_instance = None
@classmethod
def get(cls):
if cls._instance is None:
cls._instance = cls()
return cls._instance
a = Singleton.get()
b = Singleton.get()
print(a is b)Overstyre klassemetoder
class Base:
@classmethod
def info(cls): return f'{cls.__name__} info'
class Child(Base): pass
print(Base.info())
print(Child.info())Typesjekking med cls
class Shape:
@classmethod
def make(cls):
return cls() # NOT Shape()
class Square(Shape): pass
print(type(Square.make()).__name__)Kombinere med @property
class Config:
_data = None
@classmethod
def load(cls):
if cls._data is None:
cls._data = {'debug': True}
return cls._data
print(Config.load())Hurtigsjekk
Oppsummering
Fortsett
Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 76
- Leksjoner
- 320
Ofte stilte spørsmål
Er leksjonen «@classmethod og @staticmethod» gratis?
Ja – hele teksten i «@classmethod og @staticmethod» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Python Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Python Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «@classmethod og @staticmethod»?
Definer klassemetoder og statiske metoder med passende decorators. Du øver på Python Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Python Academy?
Ingen tidligere erfaring er nødvendig. Python Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «@classmethod og @staticmethod»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Python Academy-leksjonen?
Ja. Alle Python Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Funksjoner som førsteklasses objekter
- Skrive egendefinerte decorators
- @property-decoratoren
- @classmethod og @staticmethod