python函数返回值的问题,已解决
本帖最后由 ymhld 于 2020-3-1 16:46 编辑讨论一个有意思的问题,如果把return 语句放在init中,会出错,现在是想返回一个字典
用print (user_1.profile)可以看到字典,
但用user_1.returnprofile返回时,却是显示:
<bound method user.returnprofile of <__main__.user object at 0x0000000002301220>>
如何能用userdict=*****这种形式得到正确的返回字典呢,
class user:
"""docstring for user:"""
def __init__(self, first_name,last_name,**user_info):
self.first=first_name
self.last=last_name
self.info=user_info
self.profile={'first name':self.first,'Last name':self.last}
for key ,value in self.info.items():
self.profile=value
self.returnprofile
def returnprofile():
print ('内部',self.profile)
return self.profile
user_1=user('john','smith',age=0,lover='judy')
print (user_1.profile)
print(user_1.returnprofile) {'first name': 'john', 'Last name': 'smith', 'age': 0, 'lover': 'judy'}
返回正确的字典形式 什么时候我才能像你这么优秀 优秀,学习了 RJia 发表于 2020-3-1 15:59
优秀,学习了
没有解决呀,一起讨论一下吧 类变量跟类属性变量的问题 你调用那个函数不就返回字典了?
print(user_1.returnprofile())
顺便说一句,这里应该是def returnprofile(self):吧? 你这个返回的是对象 首先,python的类里面的方法第一个要写self参数,你写少了!
如果要看到字典有两种方式,第一种方式,调用括号即可:
class user:
"""docstring for user:"""
def __init__(self, first_name, last_name, **user_info):
self.first = first_name
self.last = last_name
self.info = user_info
self.profile = {'first name': self.first, 'Last name': self.last}
for key, value in self.info.items():
self.profile = value
self.returnprofile
def returnprofile(self):
print('内部', self.profile)
return self.profile
user_1 = user('john', 'smith', age=0, lover='judy')
#
print(user_1.profile)
#
print(user_1.returnprofile())
第二种方式,把方法变成属性即可,不需要调用括号,但是需要在方法的上面调用@property把方法变成属性来使用。
class user:
"""docstring for user:"""
def __init__(self, first_name, last_name, **user_info):
self.first = first_name
self.last = last_name
self.info = user_info
self.profile = {'first name': self.first, 'Last name': self.last}
for key, value in self.info.items():
self.profile = value
self.returnprofile
@property
def returnprofile(self):
print('内部', self.profile)
return self.profile
user_1 = user('john', 'smith', age=0, lover='judy')
#
print(user_1.profile)
#
print(user_1.returnprofile)
{:301_997:} ligxi 发表于 2020-3-1 16:16
首先,python的类里面的方法第一个要写self参数,你写少了!
如果要看到字典有两种方式,第一种方式,调用 ...
self这个知道错在哪了,下面的@property都没用过!!
页:
[1]
2