我有一个名为
Storage
的简单类,它有很多方法和属性。
对于这个问题,我只对同时创建
uniques
类方法和属性感兴趣。我不知道这是否可能。我想知道是否存在动态处理:基于是否从类或对象调用 uniques
,那么对于使用的相同输入,我们应该始终得到相同的结果(这里是 data
)。
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'
你们能告诉我如何处理吗?这可能吗?
以下方法有效,但很丑,我不建议使用它:
class Storage:
def __init__(self, data):
self.data = data
def _uniques():
return [list(set(item)) for item in data]
self.uniques = _uniques
@classmethod
def uniques(cls, data):
return [list(set(item)) for item in data]
# Testing
data = [["apple", "banana", "apple"], ["cat", "dog", "dog"], ["red", "blue", "red"]]
print(Storage.uniques(data))
print(Storage(data).uniques())