为什么我得到 "NoneType'对象没有属性..."?

最后发布: 2020-08-03


问题

我的类。

class UserInfo:

    def __init__(self, name):
        self.name = name
        self.prop = list([10])    # Default info

    def add_info(self, newprop):
        self.prop = [] #Create a new empty list (deletes default)
        self.prop.append(newprop)

下面的代码很好用

# Testing code:
 Mat2 = UserInfo('MaterialNew')

 Mat2.add_info(123)

 print("This is when a new prop is added. The prop is: {}".format(Mat2.prop))

但下面的代码却返回错误 'NoneType' object has no attribute 'prop':

Mat2_info = UserInfo('MaterialNew').add_info(123).prop #supposed new material info
print("This is supposed to be the new info, but it fails: {}".format(Mat2_info))

谁能解释一下这个逻辑?

python python-3.x
回答

你很接近了! 你正在尝试用方法链的方式来走捷径。

tmp = UserInfo('MaterialNew').add_info(123)
Mat2_info = tmp.prop #supposed new material info

归去吧 selfadd_info 就可以了

class UserInfo:

    def __init__(self, name):
        self.name = name
        self.prop = list([10])    # Default info

    def add_info(self, newprop):
        self.prop = [] #Create a new empty list (deletes default)
        self.prop.append(newprop)
        return self


回答

你的代码在.prop部分失败了,因为'prop' != 'self.prop'。

也就是说,你想用'.prop'在语句末尾实现什么?试着去掉这部分。

你的第一部分工作是因为你正确地访问了那个函数,而不是self.prop。