Как сделать функцию доступной как из объекта, так и из самого класса?Python

Программы на Python
Anonymous
Как сделать функцию доступной как из объекта, так и из самого класса?

Сообщение Anonymous »

У меня есть простой класс Storage, который имеет множество методов и свойств.
Что касается этого вопроса, меня интересует только создание уникальных методов класса. и недвижимость одновременно. Я не знаю, возможно ли это. Интересно, существует ли динамическая обработка: в зависимости от того, вызывается ли uniques из класса или объекта, мы всегда должны иметь один и тот же результат для одного и того же используемого ввода (здесь это данные).

Код: Выделить всё

class Storage:
def __init__(self, data):
self.data = data

@classmethod
def uniques(cls, data=None):
if data is None:
data = cls.data
return [list(set(item)) for item in data]
К сожалению, когда я пытаюсь выполнить оба вызова, один работает, а второй выдает ошибку:

Код: Выделить всё

data = [["apple", "banana", "apple"], ["cat", "dog", "dog"], ["red", "blue", "red"]]

print(Storage.uniques(data))
# [["banana", "apple"], ["cat", "dog"], ["blue", "red"]]

########################################

print(Storage(data).uniques())

5 @classmethod
6 def uniques(cls, data=None):
7     if data is None:
----> 8         data = cls.data
9     return [list(set(item)) for item in data]

AttributeError: type object 'Storage' has no attribute 'data'
Можете ли вы, ребята, показать мне, как с этим справиться? Это вообще возможно?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ass-itself

Вернуться в «Python»