我是面向对象编程的新手,并且希望对其进行更多的探索。我这里有一个字典“ a”,其中有某些键值对。因此,我想做的是建立一个遍历此字典的方法,并且只采用其值为True的值
我尝试创建一个接受值的类,我具有检查dict中的值的逻辑,但不了解如何继续从中创建方法
a = {“ A”:对,“ B”:对,“ C”:对}
class Check:
def __init__(self, country, A, B):
self.country = country
self.A = A
self.B = B
def countrycheck(self):
Result = {}
for i in self.country:
if self.country[i] == True:
Result.update({i: True})
return Result
我得到了结果,但不能表达出我真正想要的东西。我希望它运行这样的内容:
trial = Check(a, b, c)
因此运行该命令应该给我一个dict = {“ A”:True,“ C”:True}。 a是我从dict中检查国家/地区值的地方,并且我还希望b和c参数存在。我尝试使用它们,但这给了我这个错误-“ b未定义”
答案 0 :(得分:1)
函数 init (),总是在启动类时执行。
使用 init ()函数为对象属性或创建对象时必须执行的其他操作分配值。在您的情况下,def __init__(self, country, A, B):
中的A,B没有意义
注意:self参数是对该类当前实例的引用,用于访问属于该类的变量。
对象方法:
对象也可以包含方法。对象中的方法是属于该对象的函数。
如果要在该类的定义之外使用该类的方法(或属性),则可以这样做:
trial = Check(a)
trial.countrycheck()
示例:
class A(object):
def foo(self):
print ('Foo')
def bar(self, argument):
print ('Bar ', argument)
a = A()
a.foo() #prints 'Foo'
a.bar('Arg!') #prints 'Bar Arg!'
您的代码应如下所示:
class Check:
def __init__(self, country):
self.country = country
def countrycheck(self):
Result = {}
for i in self.country:
if self.country[i] == True:
Result.update({i: True})
return Result
a = {"A": True, "B": False, "C": True}
trial = Check(a)
print (trial.countrycheck())
输出:
{'A': True, 'C': True}