在使用伪参数的类中创建方法

时间:2019-05-27 19:13:04

标签: python python-3.x class methods

我是面向对象编程的新手,并且希望对其进行更多的探索。我这里有一个字典“ 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未定义”

1 个答案:

答案 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}