吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1140|回复: 19
收起左侧

[求助] python函数返回值的问题,已解决

[复制链接]
ymhld 发表于 2020-3-1 15:44
本帖最后由 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=*****  这种形式得到正确的返回字典呢,
[Python] 纯文本查看 复制代码
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[key]=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)

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
RJia + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 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

没有解决呀,一起讨论一下吧
老东东2019 发表于 2020-3-1 16:09
类变量跟类属性变量的问题
nstar1221 发表于 2020-3-1 16:10
你调用那个函数不就返回字典了?
print(user_1.returnprofile())
顺便说一句,这里应该是def returnprofile(self):吧?

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
ymhld + 1 + 1 谢谢@Thanks!

查看全部评分

jievettel6 发表于 2020-3-1 16:10
你这个返回的是对象
ligxi 发表于 2020-3-1 16:16
首先,python的类里面的方法第一个要写self参数,你写少了!
如果要看到字典有两种方式,第一种方式,调用括号即可:
[Python] 纯文本查看 复制代码
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[key] = 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把方法变成属性来使用。
[Python] 纯文本查看 复制代码
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[key] = 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)

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
ymhld + 1 + 1 热心回复!
漁滒 + 1 + 1 热心回复!

查看全部评分

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

self这个知道错在哪了,下面的@property都没用过!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-30 05:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表