python class 自己和 __init__
python class self and __init__
我有以下代码和任何试图使 class 在列表中生成两个随机数和 returns 它们
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 的其他问题,但我无法理解。
我认为你尝试这样做:
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()
要使用 class,您必须创建 object/instance。创建实例 python 调用 Add.__init__
并在内存中为 self.data
保留位置。然后你可以调用它的方法 my_object.generate_location()
它可以使用 self.data
.
self
仅在 class 内部使用 - 就像单词 me
、my
(my.data
).
self.data.GenerateLocation(self)
行真的很奇怪,不清楚你想在这里做什么。如果您正在创建 class,您似乎想要实例化它,即创建那个 class 的对象。为此,您必须调用构造函数。在您的情况下,它就像(从@furas 的回答中复制)
my_object = Add()
这将创建对象 my_object
,它是 class Add
的实例。然后你可以调用对象的方法 generate_location
。为此,您必须在 generate_location()
前加上您的对象名称。
my_object.generate_location()
请注意,尽管 generate_location
具有参数 self
,但并未在此调用中明确给出。这是因为 Python 会自动将对象 my_object
作为第一个参数传递(引用)给方法 generate_location
,因为它是该对象的方法。 (方法是与对象关联的函数,例如列表的 .append()
。)
我有以下代码和任何试图使 class 在列表中生成两个随机数和 returns 它们
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 的其他问题,但我无法理解。
我认为你尝试这样做:
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()
要使用 class,您必须创建 object/instance。创建实例 python 调用 Add.__init__
并在内存中为 self.data
保留位置。然后你可以调用它的方法 my_object.generate_location()
它可以使用 self.data
.
self
仅在 class 内部使用 - 就像单词 me
、my
(my.data
).
self.data.GenerateLocation(self)
行真的很奇怪,不清楚你想在这里做什么。如果您正在创建 class,您似乎想要实例化它,即创建那个 class 的对象。为此,您必须调用构造函数。在您的情况下,它就像(从@furas 的回答中复制)
my_object = Add()
这将创建对象 my_object
,它是 class Add
的实例。然后你可以调用对象的方法 generate_location
。为此,您必须在 generate_location()
前加上您的对象名称。
my_object.generate_location()
请注意,尽管 generate_location
具有参数 self
,但并未在此调用中明确给出。这是因为 Python 会自动将对象 my_object
作为第一个参数传递(引用)给方法 generate_location
,因为它是该对象的方法。 (方法是与对象关联的函数,例如列表的 .append()
。)