我有一个课说:
class MyClass:
def mymethod(self, data1, data2):
print (self.data1)
print (self.data2)
我在django视图的某个地方调用了这个类,并发送了这样的争论:
mycls = MyClass()
mycls.mymethod(data1, data2)
当我这样做时,它说'MyClass'对象没有属性'data1'
怎么了?
答案 0 :(得分:1)
因为您还没有分配给他们。我猜你正在尝试做的是这样的事情:
class MyClass:
def mymethod(self, data1, data2):
self.data1 = data1
self.data2 = data2
print(self.data1)
print(self.data2)
直到您实际分配给self.something
(即使您有一个名为something
的方法的参数),该变量也不存在。 something
和self.something
是两回事。
或者,如果您只是尝试将两个参数的值打印到方法中,您可能希望这样做:
class MyClass:
def mymethod(self, data1, data2):
print(data1)
print(data2)
答案 1 :(得分:0)
MyClass.mymethod
中,您完全忽略了data1
和data2
args,并尝试打印(显然不存在的)实例属性self.data1
和self.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