Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我需要打电话给';引号';在这种情况下,与使用self相反?_Python_Class_Reference_Attributes - Fatal编程技术网

Python 为什么我需要打电话给';引号';在这种情况下,与使用self相反?

Python 为什么我需要打电话给';引号';在这种情况下,与使用self相反?,python,class,reference,attributes,Python,Class,Reference,Attributes,好吧,我是编程新手,正在通过制作一个基于文本的游戏来学习类的使用,但我不确定为什么使用Death.quips代替self.quips,或者更确切地说,为什么不使用Death.quips代替self.quips。我认为这与当地人对俏皮话的引用有关,但我不知道为什么你必须在特定情况下使用每种俏皮话。谢谢 引号是类变量,而不是实例变量。如果它是一个实例变量,那么应该使用 class Death(Scene): quotes = [ "You are dead.",

好吧,我是编程新手,正在通过制作一个基于文本的游戏来学习类的使用,但我不确定为什么使用Death.quips代替self.quips,或者更确切地说,为什么不使用Death.quips代替self.quips。我认为这与当地人对俏皮话的引用有关,但我不知道为什么你必须在特定情况下使用每种俏皮话。谢谢

引号
是类变量,而不是实例变量。如果它是一个实例变量,那么应该使用

class Death(Scene):

     quotes = [
          "You are dead.",
          "Haha. bad.",
          "Sorry, you died.",
          "Probably should try something different."
          ]

     def enter(self):
          print Death.quotes[randint(0, len(self.quips)-1)]
          exit(1)
并且需要在提供
self
参数的方法中设置(如
enter
方法中所示)

类变量通过
ClassName.variable
访问,而类内的实例变量通过
self.variable
访问


这里有一个很好的参考:

quotes
是类变量,而不是实例变量。如果它是一个实例变量,那么应该使用

class Death(Scene):

     quotes = [
          "You are dead.",
          "Haha. bad.",
          "Sorry, you died.",
          "Probably should try something different."
          ]

     def enter(self):
          print Death.quotes[randint(0, len(self.quips)-1)]
          exit(1)
并且需要在提供
self
参数的方法中设置(如
enter
方法中所示)

类变量通过
ClassName.variable
访问,而类内的实例变量通过
self.variable
访问


这里有一个很好的参考:

quotes
是类变量,而不是实例变量。如果它是一个实例变量,那么应该使用

class Death(Scene):

     quotes = [
          "You are dead.",
          "Haha. bad.",
          "Sorry, you died.",
          "Probably should try something different."
          ]

     def enter(self):
          print Death.quotes[randint(0, len(self.quips)-1)]
          exit(1)
并且需要在提供
self
参数的方法中设置(如
enter
方法中所示)

类变量通过
ClassName.variable
访问,而类内的实例变量通过
self.variable
访问


这里有一个很好的参考:

quotes
是类变量,而不是实例变量。如果它是一个实例变量,那么应该使用

class Death(Scene):

     quotes = [
          "You are dead.",
          "Haha. bad.",
          "Sorry, you died.",
          "Probably should try something different."
          ]

     def enter(self):
          print Death.quotes[randint(0, len(self.quips)-1)]
          exit(1)
并且需要在提供
self
参数的方法中设置(如
enter
方法中所示)

类变量通过
ClassName.variable
访问,而类内的实例变量通过
self.variable
访问


这里可以找到一个很好的参考:

假设
quips
你的意思是
quotes
你实际上可以使用其中任何一种,但它们的效果略有不同

如果使用
Death.quotes
这将在类
Death
中查找名为
quotes
的属性并使用它

如果使用
self.quotes
这将首先查看实例
self
的内部,然后查看实例
self
的类中名为
quotes
的属性。在您的特定示例中,这与调用
Death.quotes的行为相同,因为
self
是类
Death
的一个实例,但有一些关键区别需要注意:

1) 如果您的实例变量
self
也有一个名为
quotes
的属性,那么它将被访问,而不是使用与以下示例相同的名称访问class属性:

self.quotes = [...]
2) 如果
self
Death
子类的一个实例,并且该子类定义了自己的类变量名
quotes
,则使用
self.quotes
将改为使用属性,如下例所示

class Death(Scene):
    quotes = [
        'some awesome quote',
    ]
    def __init__(self):
        sef.quotes = ['foo']

    def some_method(self):
        # This will print out 'some awesome quote'
        print Death.quotes[0]
        # This will print out 'foo'
        print self.quotes[0]

既然您已经了解了这一点,我将告诉您,通过子类化支持扩展实际上(通常)是一件好事,我本人将使用
self.quotes
而不是
Death.quotes
,但是理解原因是很重要的。

假设你所说的“俏皮话”的意思是“引用”,你实际上可以使用其中任何一种,但它们的效果略有不同

如果使用
Death.quotes
这将在类
Death
中查找名为
quotes
的属性并使用它

如果使用
self.quotes
这将首先查看实例
self
的内部,然后查看实例
self
的类中名为
quotes
的属性。在您的特定示例中,这与调用
Death.quotes的行为相同,因为
self
是类
Death
的一个实例,但有一些关键区别需要注意:

1) 如果您的实例变量
self
也有一个名为
quotes
的属性,那么它将被访问,而不是使用与以下示例相同的名称访问class属性:

self.quotes = [...]
2) 如果
self
Death
子类的一个实例,并且该子类定义了自己的类变量名
quotes
,则使用
self.quotes
将改为使用属性,如下例所示

class Death(Scene):
    quotes = [
        'some awesome quote',
    ]
    def __init__(self):
        sef.quotes = ['foo']

    def some_method(self):
        # This will print out 'some awesome quote'
        print Death.quotes[0]
        # This will print out 'foo'
        print self.quotes[0]

既然您已经了解了这一点,我将告诉您,通过子类化支持扩展实际上(通常)是一件好事,我本人将使用
self.quotes
而不是
Death.quotes
,但是理解原因是很重要的。

假设你所说的“俏皮话”的意思是“引用”,你实际上可以使用其中任何一种,但它们的效果略有不同

如果使用
Death.quotes
这将在类
Death
中查找名为
quotes
的属性并使用它

如果使用
self.quotes
这将首先查看实例
self
的内部,然后查看实例
self
的类中名为
quotes
的属性。在您的特定示例中,这与调用
Death.quotes的行为相同,因为
self
是c