Как работать с переменной внутри класса?
class RomanNumeralsi:
roman_numbers = {
'I': 1,
'V': 5,
'X': 10,
'L': 50,
'C': 100,
'D': 500,
'M': 1000
}
def from_roman(number):
for key, value in roman_numbers.items():
if number == key:
return value
# функция не видит переменную roman_numbers
print(RomanNumeralsi.from_roman('M'))
Ответы (3 шт):
Автор решения: Dmitry
→ Ссылка
Просто обратиться к ней через self:
def from_roman(self, number):
for key, value in self.roman_numbers.items():
if number == key:
.....
и вызывайте через объект класса, примерно так:
>>> obj = RomanNumeralsi() # объект
>>> print(obj.roman_numbers) # вывести, что содержится в этом поле
>>> obj.from_roman("M")
1000
Автор решения: Александр Гордеев
→ Ссылка
Для взаимодействия с переменными класса, вам нужно сначала занести их в конструктор:
def __init__(self):
self.roman_numbers = {
'I': 1,
'V': 5,
'X': 10,
'L': 50,
'C': 100,
'D': 500,
'M': 1000
}
После этого уже можно обращаться к переменной с помощью self (в функциях класса также нужно передавать в них self):
def from_roman(self, number):
for key, value in self.roman_numbers.items():
if number == key:
return value
Автор решения: GrAnd
→ Ссылка
Так обычно не пишут, но работать будет.
class RomanNumeralsi:
roman_numbers = {
'I': 1,
'V': 5,
'X': 10,
'L': 50,
'C': 100,
'D': 500,
'M': 1000
}
def from_roman(number):
for key, value in RomanNumeralsi.roman_numbers.items():
if number == key:
return value
print(RomanNumeralsi.from_roman('M'))
А вот так правильно работать с классами.
class RomanNumeralsi:
roman_numbers = {
'I': 1,
'V': 5,
'X': 10,
'L': 50,
'C': 100,
'D': 500,
'M': 1000
}
def from_roman(self, number):
for key, value in self.roman_numbers.items():
if number == key:
return value
roman_numeralsi = RomanNumeralsi()
print(roman_numeralsi.from_roman('M'))