我上的课:
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))
有人可以解释逻辑吗?
答案 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。