• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Odwołanie do zmiennej w metodzie

Object Storage Arubacloud
0 głosów
286 wizyt
pytanie zadane 30 stycznia 2019 w Python przez Dawid89 Obywatel (1,100 p.)
class Titles:
    def __init__(self, random_word, word = ''):
        self.random_word = random_word
        self.word = word
    def word_shuffle(self):
        self.random_word = random.choice(list(words))
        return 'Kategoria: ' + self.random_word
    def word_pick(self):
        self.word = random.choice(words[self.random_word])
        self.word = (i.replace(i, '*') if i != ' ' else i.replace(i, ' ') for i in self.word )
        for w in self.word:
            print (*w, end='')

title = Titles(words)

Potrzebuję odwołać się do zmiennej word w metodzie word_pick (zanim robię na niej iteracje) w innym pliku i pytanie jak to zrobić? Chociaż sam już nie wiem czy to tak może wyglądać i czy w ogóle powinno.

komentarz 30 stycznia 2019 przez adrian17 Ekspert (344,860 p.)
Nie za bardzo rozumiem, co tu chcesz zrobić... do Titles() przekazujesz zmienną `words`, ale w klasie trzymasz tylko `self.random_word ` (które zawiera to samo co `words`) i `self.word`?
komentarz 30 stycznia 2019 przez Dawid89 Obywatel (1,100 p.)
Teraz ja nie rozumiem...words to słownik , z niego wyciągam losowy klucz (w którym jest lista).

Druga metoda pobiera losowe słowo z  listy a dalej podmienia znaki stringa na *.

Teraz w innym pliku chcę dodać warunek sprawdzający czy  ów słowo zawiera podany przez użytkownika znak.

Ale może coś źle tutaj robię.
komentarz 30 stycznia 2019 przez adrian17 Ekspert (344,860 p.)
edycja 30 stycznia 2019 przez adrian17

Może inaczej:

title = Titles(words)

czemu przekazujesz tutaj `words` jako argument?

        self.random_word = random_word
        self.word = word

I czym w konstruktorze zakładasz że będą `random_word` i `word`?

Bonusowe pytanie: czemu to w ogóle jest klasa?

komentarz 31 stycznia 2019 przez Dawid89 Obywatel (1,100 p.)
edycja 31 stycznia 2019 przez Dawid89
Chciałem poćwiczyć OOP i dlatego zrobiłem klasę. Ale teraz już widzę, że kompletnie się zamotałem z konstruktorem. On przecież tutaj wcale nie jest potrzebny. Tylko teraz pytanie co ze zmiennymi z konstruktora które potrzebuje w metodach? Zdefiniować je poza klasą? Czy w ogóle wywalić klase? Bo chciałbym żeby te zmienne były lokalne, poza metodą nie będą przecież potrzebne.

Albo jeszcze myślę, czy w __init__ nie zostawić samego self ? Takie rozwiązanie jest poprawne? Wtedy atrybuty mogłyby mieć wartość domyślną
komentarz 31 stycznia 2019 przez adrian17 Ekspert (344,860 p.)

Dobra, to ten sam kod, bez wielu wielu warstw przekomplikowania:

def title(words):
    category = random.choice(list(words))
    word = random.choice(words[category])
    word = ''.join('*' if c != ' ' else ' ' for c in word)
    print(word)
 
words = ...
title(words)

Zacznij od czegoś prostego jak to, potem się zastanawiaj jak (jeśli w ogóle) to owijać w klasę.

komentarz 31 stycznia 2019 przez Dawid89 Obywatel (1,100 p.)
No tak, po tym co teraz dodałeś widzę, że przekombinowałem i sporo muszę poćwiczyć.

Dzięki za pomoc!

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 1,260 wizyt
pytanie zadane 12 sierpnia 2018 w PHP przez Luna Cognita Dyskutant (8,130 p.)
+1 głos
2 odpowiedzi 110 wizyt
0 głosów
1 odpowiedź 831 wizyt
pytanie zadane 16 października 2017 w Java przez zygmunt Początkujący (310 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...