这段代码中的AttributeError是什么? Pathon 3.4

时间:2016-05-07 06:46:15

标签: python python-3.x

class A {
  constructor(x) {
    this.x = x;
    // Not a super call, thus freeze the object
    if (new.target === A) {
      Object.freeze(this);
    }
  }
}

class B extends A {
  constructor(x, y) {
    super(x)
    this.y = y
    if (new.target === B) {
      Object.freeze(this)
    }
  }
}

AttributEerror:'NoneType'对象没有属性'format'

enter image description here

2 个答案:

答案 0 :(得分:1)

打印语句关闭后您正在格式化

private string imageBase64
public string ImageBase64
{
    get { return imageBase64; }
    set
    {
        imageBase64 = value;
        OnPropertyChanged("ImageBase64");
        OnPropertyChanged("Image");
    } 
}

private Xamarin.Forms.ImageSource image;
public Xamarin.Forms.ImageSource Image
{
    get
    {
        if (image == null)
        {
            image = Xamarin.Forms.ImageSource.FromStream(
                () => new MemoryStream(Convert.FromBase64String(ImageBase64)));
        }
        return image;
    }
}

你需要的是:

print (x).format(something)
#       ^ Move this parentheses to end

然而,在Python 2中,它不重要:

print ("Starting {0} concurrent workers".format(self.nr_workers))
#                                                               ^ here 

答案 1 :(得分:0)

由于您使用的是Python 3,因此括号是print()函数调用的一部分。如果您使用的是Python 2,他们只会将字符串分组(不必要地,我可能会添加)。我将用额外的括号来说明:

乍一看会发生什么,并且会在Python 2中发生:

print   ( ("Starting {0} concurrent workers").format(self.nr_workers) )

当您使用Python 3时,实际发生了什么:

(print("Starting {0} concurrent workers")).format(self.nr_workers)

由于print()调用返回None,它会尝试在format()上使用None并失败。

要格式化实际字符串(使用样式上正确的括号),请将格式放在打印调用中。

print("Starting {0} concurrent workers".format(self.nr_workers))