Как написать класс, чтобы этот код работал.Python - Как использовать свойства без создания объекта
class number:
def double(self):
return n*2
print(number(44).double)
>> 88
Как написать класс, чтобы этот код работал.Python - Как использовать свойства без создания объекта
class number:
def double(self):
return n*2
print(number(44).double)
>> 88
Ну, вы могли бы украсить метод number.double с property
:
class number:
def __init__(self, number):
self.number = number
@property
def double(self):
return self.number * 2
print(number(42).double) # 84
Если вы знаете тип вашей аргументации, было бы лучше, чтобы наследовать number
от него. Например
class number(int):
@property
def double(self):
return type(self)(self * 2)
print(number(42).double) # 84
print(number(42).double.double) # 168
Здесь вы:
class Number(object):
def __init__(self, n):
self.n = n
def double(self):
return 2*self.n
print(Number(44).double())
Несколько примечаний:
double()
является методом класса Number
(а не атрибута), вам нужно используйте круглые скобки для вызова.n
или 44
, вы должны def
функцию __init__()
, которая дает инструкции переводчика о том, как создать или инициализировать экземпляр вашего класса.Надеюсь, это поможет, и удачи!
Я делаю упражнение на кодовых знаках, и мне нужно использовать следующий синтаксис. Я не думаю, что могу использовать метод. Вот тестовый пример. test.assert_equals (PrimeFactorizer (24) .factor, {2: 3, 3: 1}) – Nohl
Есть ли у вас код или документация для '' 'test.assert_equals()' ''. Я почти уверен, что '' 'test.assert_equals()' '' принимает фактическую функцию как аргумент (а не значение, возвращаемое вызовом функции), так что он может вызывать эту функцию. Если это так, то '' 'PrimeFactorizer.factor()' '' на самом деле является методом, даже если вы не используете круглые скобки при его использовании таким образом. – pzp
Не знаю, почему вы подклассифицируете int, когда они пытаются написать общий числовой класс. – L3viathan
@ L3viathan fine – vaultah
@ L3viathan 'number ('Слишком общий huh ? '). double' – vaultah