【发布时间】:2021-09-21 05:15:51
【问题描述】:
我想增强下面的人工示例
class Record:
def __init__(self, data):
self.data = data
def filter(self, positive = False, even = False):
data_ = self.data
if positive:
data_ = [c for c in data_ if c>0]
if even:
data_ = [c for c in data_ if c % 2 ==0]
self.data = data_
data = list(range(-5,10,1))
record = Record(data)
record.filter(positive=True, even=True)
print(record.data)
正确打印[2,4,6,8],以便在初始化记录实例时请求过滤。我的做法是
class Record:
def __init__(self, data, filter = {}):
self.data = data
if len(filter) > 0:
self.filter(**filter)
def filter(self, positive = False, even = False):
data_ = self.data
if positive:
data_ = [c for c in data_ if c>0]
if even:
data_ = [c for c in data_ if c % 2 ==0]
self.data = data_
data = list(range(-5,10,1))
record = Record(data,filter={positive:True, even:True})
print(record.data)
并且(自然...)我收到错误NameError: name 'positive' is not defined。
这里如何进行,一般来说,将方法嵌入到初始化中是否是一个正确的想法?
【问题讨论】:
-
你的字典语法没有引号是无效的:
filter={"positive":True, "even":True}.
标签: python class initialization