Как работать с переменной внутри класса?

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'))
→ Ссылка