python类self和初始化__

2024-10-03 00:22:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的代码和任何试图创建一个类的代码,该类在一个列表中生成两个随机数并返回它们

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 15self.data.GenerateLocation(self)。你知道吗

有人能解释一下吗,我已经看过self和init的其他问题了,但都超出了我的理解范围。你知道吗


Tags: 代码importselfadd列表datainitdef
2条回答

这行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()

有关详细信息,请参阅官方教程:python 2python 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仅在类内使用-它类似于单词memymy.data)。你知道吗

相关问题 更多 >