最后发布: 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
归去吧 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
你的代码在.prop部分失败了,因为'prop' != 'self.prop'。
也就是说,你想用'.prop'在语句末尾实现什么?试着去掉这部分。
你的第一部分工作是因为你正确地访问了那个函数,而不是self.prop。