ymhld 发表于 2020-3-1 15:44

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)

ymhld 发表于 2020-3-1 15:45

{'first name': 'john', 'Last name': 'smith', 'age': 0, 'lover': 'judy'}

返回正确的字典形式

魔幻冰扬 发表于 2020-3-1 15:58

什么时候我才能像你这么优秀

RJia 发表于 2020-3-1 15:59

优秀,学习了

ymhld 发表于 2020-3-1 16:01

RJia 发表于 2020-3-1 15:59
优秀,学习了

没有解决呀,一起讨论一下吧

老东东2019 发表于 2020-3-1 16:09

类变量跟类属性变量的问题

nstar1221 发表于 2020-3-1 16:10

你调用那个函数不就返回字典了?
print(user_1.returnprofile())
顺便说一句,这里应该是def returnprofile(self):吧?

jievettel6 发表于 2020-3-1 16:10

你这个返回的是对象

ligxi 发表于 2020-3-1 16:16

首先,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:}

ymhld 发表于 2020-3-1 16:26

ligxi 发表于 2020-3-1 16:16
首先,python的类里面的方法第一个要写self参数,你写少了!
如果要看到字典有两种方式,第一种方式,调用 ...

self这个知道错在哪了,下面的@property都没用过!!
页: [1] 2
查看完整版本: python函数返回值的问题,已解决