带有争论的python调用类方法

时间:2015-07-01 11:50:06

标签: python class

我有一个课说:

class MyClass:
    def mymethod(self, data1, data2):
        print (self.data1)
        print (self.data2)

我在django视图的某个地方调用了这个类,并发送了这样的争论:

mycls = MyClass()
mycls.mymethod(data1, data2)

当我这样做时,它说'MyClass'对象没有属性'data1'

怎么了?

3 个答案:

答案 0 :(得分:1)

因为您还没有分配给他们。我猜你正在尝试做的是这样的事情:

class MyClass:
    def mymethod(self, data1, data2):
        self.data1 = data1
        self.data2 = data2
        print(self.data1)
        print(self.data2)

直到您实际分配给self.something(即使您有一个名为something的方法的参数),该变量也不存在。 somethingself.something是两回事。

或者,如果您只是尝试将两个参数的值打印到方法中,您可能希望这样做:

class MyClass:
    def mymethod(self, data1, data2):
        print(data1)
        print(data2)

答案 1 :(得分:0)

<{1>}在MyClass.mymethod中,您完全忽略了data1data2 args,并尝试打印(显然不存在的)实例属性self.data1self.data2。要么它是一个错字(是的,它发生了),要么你不理解这个背景下的self以及论点和属性之间的区别......

答案 2 :(得分:0)

试试你发送的这个数据,并且在mymethod中是不同的:

class MyClass:
    def mymethod(self, data1, data2):
        self.data1 = data1
        self.data2 = data2
        print self.data1
        print self.data2

OR

         print data1
         print data2