Aktywne Wpisy
ATAT-2 +297
Kiedyś myślałem że wykopki przesadzają ale teraz sam już nie wiem ( ͡° ͜ʖ ͡°)
Chyba, że ona sama to dla jaj wrzuca co by triggerować innych
#annalewandowska #lewandowski #lewandowska #logikarozowychpaskow #p0lka #heheszki
Chyba, że ona sama to dla jaj wrzuca co by triggerować innych
#annalewandowska #lewandowski #lewandowska #logikarozowychpaskow #p0lka #heheszki
![ATAT-2 - Kiedyś myślałem że wykopki przesadzają ale teraz sam już nie wiem ( ͡° ͜ʖ ͡°...](https://wykop.pl/cdn/c3201142/f2c67a1bd3aef73ed5a5b83dbe380d39eba6d34d7370155dcfea8dc952639d6a,w150.png?author=ATAT-2&auth=dc10a77f3eaf703663e3ec19c133288b)
źródło: Screenshot 2024-05-28 at 12.01.02
Pobierz![pokyw12](https://wykop.pl/cdn/c0834752/018ee57731e9dd971daebbad0c4405eba663f71470a92fd2552a29cd12ee6396,q60.jpg)
pokyw12 +64
![pokyw12 - #famemma #danielmagical
w 2025 się w kadrze nie zmieści](https://wykop.pl/cdn/c3201142/49309842658ba27bb64eb16d9e83fbb9b34e1fa0f02c843e1cf5197897479356,w150.jpg)
źródło: temp_file2071236423983868058
Pobierz
foo(bar)
zamiastbar.foo()
?foo()
, gdy używasz jej jako globalnej funkcji, zamiast metody klasy.@piotrb: Nie chodzi mi o różnicę między
foo(bar)
is.foo(bar)
, gdzie obiekts
przechowuje jakiś stan, tylko o różnicę w powodach implementacji np.len(str)
istr.len()
, gdzie funkcja nic nie musi przechowywać@DyrektorWykopu: chłopcze, wróc do podstaw
len(str) <==> str.__len__()
Z dokumentacji
object. len (self)
Called to implement the built-in function len(). Should return the length of the object, an integer >= 0.
I co teras?
@DyrektorWykopu: gówno
>>> class JestesGlupi: __len__ = lambda _: 9**9
...
>>> len(JestesGlupi())
387420489
edit: no, w Twoim wpisie też jest w formie :D
Komentarz usunięty przez moderatora
@Pipcieo: To nie jest prawda dla wbudowanych obiektów implementacji CPython. Długość jest po prostu odczytywania z pola struktury w języku C.
@DyrektorWykopu: Generalnie funkcje takie jak len i abs nie są wywoływane jako metody ('abd'.len()) , ponieważ są traktowane jako część modelu danych Pythona.
Dzięki specjalnej metodzie len_ możemy sprawić, że funkcja len będzie działać dla niestandardowych obiektów.
jest bzdurą i nie ma co na jej podstawie zadawac pytań.
To co się dzieje w CPython (a zwłaszcza optymalizacje) nie ma tutaj żadnego znaczenia, bo to szczegół implementacyjny w C, a jesteśmy na tagu #python a nie #c.
ep = Episode(*args)
, to czy lepiej jest zrobićh = ep.simulate()
czyh = simulate(ep)
. Niby różnica niewielka, ale zawsze lepiej rozumieć, dlaczego jedno jest lepsze od drugiego.Tymczasem @Pipcieo twierdzi... właściwie nie rozumiem już za bardzo, co on twierdzi. Że nie mogę napisać funkcji, która jest stateless? Bo
@DyrektorWykopu: różnica jest fundamentalna. pierwsze to programowanie obiektowe, drugie strukturalne. napisałem ci w pierwszym poście: WRÓC DO PODSTAW
Natomiast w konkretnym przykładzie z len() uświadomiłem ci, że to zły przykład, bo
len
to builtin który woła__len__
na instancji. Dla każdego innego (ale poprawnego przykładu) patrz paragraf wyżej.ep.simulate() == Episode.simulate(ep)
@DyrektorWykopu:
A jak się zachowa:
simulate(None)
simulate(1337)
simulate('no elo')
Dla mnie prawie zawsze jak coś nie jest wywoływane "z instancji obiektu" jako globalna metoda
Poczytaj sobie o tym czym jest programowanie zorientowane obiektowo (OOP).
W Pythonie można pisać obiektowo, strukturalnie jak i funkcyjnie (mamy sporo zapożyczeń z Lispa jak i Haskella)
@Budek24: simulate() powiązane jest z klasą Episode na tej samej zasadzie,
@Budek24: I w myśl zasady, że zawsze istnieje właściwy sposób napisania czegoś w pythonie, coś z tego trzeba wybrać. Takie Django na przykład w większości kodu stosuje oop, ale już middleware są funkcjami.