为什么我得到“ NoneType”对象没有属性...?

时间:2020-04-22 16:39:03

标签: python python-3.x

我上的课:

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))

有人可以解释逻辑吗?

2 个答案:

答案 0 :(得分:3)

您接近!您正在尝试将方法链接作为一种快捷方式

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

只需从self返回add_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

答案 1 :(得分:0)

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

话虽这么说,您打算在语句末尾使用'.prop'完成什么?尝试删除该部分。

您的第一部分起作用是因为您正在正确访问该功能,而不是self.prop。