我有以下代码和任何尝试创建一个在列表中生成两个随机数并返回它们的类
import random
class add :
def __init__(self):
self.data = []
def GenerateLocation(self):
random1 = 10
random2 = 20
self.data.append(random.uniform(-random1 , random1))
self.data.append(random.uniform(-random2 , random2))
print(self.data)
self.data.GenerateLocation(self)
我收到错误self is not defined in line 15
self.data.GenerateLocation(self)
。
任何人都可以解释这一点,我已经看过关于self和init的其他问题,但它已经超出了我的想法。
答案 0 :(得分:3)
我想你试着这样做:
import random
class Add:
def __init__(self):
self.data = []
def generate_location(self):
random1 = 10
random2 = 20
self.data.append(random.uniform(-random1 , random1))
self.data.append(random.uniform(-random2 , random2))
print(self.data)
my_object = Add()
my_object.generate_location()
要使用类,您必须创建对象/实例。创建实例python调用Add.__init__
并保留在self.data
的内存中。然后,您可以调用其方法my_object.generate_location()
,它可以使用self.data
。
self
仅在课堂内使用 - 就像字me
,my
(my.data
)。
答案 1 :(得分:1)
行self.data.GenerateLocation(self)
真的很奇怪,不清楚你在这里想做什么。如果您正在创建类,那么您似乎想要即时创建它,即创建该类的对象。为此,您必须调用构造函数。在你的情况下,它将是(从@ furas的答案复制)
my_object = Add()
这会创建对象my_object
,它是类Add
的实例。然后,您可以调用对象的方法generate_location
。为此,您必须在generate_location()
前加上对象的名称。
my_object.generate_location()
请注意,尽管generate_location
具有参数self
,但在此调用中未明确指出。这是因为Python会自动将对象my_object
(引用)传递给方法generate_location
作为第一个参数,因为它是该对象的方法。 (方法是与对象关联的函数,例如列表的.append()
。)