Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.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 类Duck,它为每个Duck对象创建随机初始化的数字_Python_Class_Object - Fatal编程技术网

Python 类Duck,它为每个Duck对象创建随机初始化的数字

Python 类Duck,它为每个Duck对象创建随机初始化的数字,python,class,object,Python,Class,Object,我正在编写一个Duck类,这样创建的每个Duck对象都包含wingspan和weight字段变量。每只鸭子都应该随机初始化其中的每一个。翼展应初始化为[80.0100.0]厘米范围内的随机浮动。重量应在[0.7,1.6]kg范围内随机初始化 我认为这很简单,但由于某些原因,我的输出完全错误: import random class Duck: wingspan = round(random.uniform(80.0, 100.0), 1) weight = round(rand

我正在编写一个Duck类,这样创建的每个Duck对象都包含wingspan和weight字段变量。每只鸭子都应该随机初始化其中的每一个。翼展应初始化为[80.0100.0]厘米范围内的随机浮动。重量应在[0.7,1.6]kg范围内随机初始化

我认为这很简单,但由于某些原因,我的输出完全错误:

import random
class Duck:

    wingspan = round(random.uniform(80.0, 100.0), 1)
    weight = round(random.uniform(0.7,1.6), 2)
我正在寻找类似以下内容的输出:

>>> duck1 = Duck()
>>> print(duck1.wingspan)
  83.2
>>> print(duck1.weight)
  0.93
>>> duck2 = Duck()
>>> print(duck2.wingspan)
  97.5
>>> print(duck2.weight)
  1.32
但我一直在为这两只鸭子的翼展和重量提供相同的输出:

>>> duck1 = Duck()
>>> print(duck1.wingspan)
  83.2
>>> print(duck1.weight)
  0.93
>>> duck2 = Duck()
>>> print(duck2.wingspan)
  83.2
>>> print(duck2.weight)
  0.93

您已经创建了类变量,而不是实例变量。这意味着这些值对于类的所有实例都是相同的。只需将它们分配给实例:

import random
class Duck:
    def __init__(self):
        self.wingspan = round(random.uniform(80.0, 100.0), 1)
        self.weight = round(random.uniform(0.7,1.6), 2)

您已经创建了类变量,而不是实例变量。这意味着这些值对于类的所有实例都是相同的。只需将它们分配给实例:

import random
class Duck:
    def __init__(self):
        self.wingspan = round(random.uniform(80.0, 100.0), 1)
        self.weight = round(random.uniform(0.7,1.6), 2)