[新手]Python关于类的疑问
高洛峰
高洛峰 2017-04-17 13:05:53
[Python讨论组]
class Len2:
    def __init__(self):
        pass
    def set(self,x,y):
        self.g=x
        self.h=y
    def dis(self,po1,po2):
        dis=(po1.g-po2.g)**2+(po1.h-po2.h)**2
a=Len2()
a.set(1,1)
b=Len2()
b.set(5,4)
c=Len2()
print c.dis(a,b)

想算两个点的距离,可是这段运行print了None,求问各种大神原因!谢谢啦。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(5)
黄舟

因为 def dis 这个方法没有返回值,因此你得到的就是 None。
把 def dis 那段改成下面的就好了。

    def dis(self,po1,po2):
        dis=(po1.g-po2.g)**2+(po1.h-po2.h)**2
        return dis
ringa_lee

没return?

天蓬老师

感觉好别扭,为什么计算两个点的距离却需要第三个对象.

大家讲道理

a,b都没有赋值啊。

大家讲道理

class Len2:
def init(self):
pass
def set(self,x,y):
self.g=x
self.h=y
return set
def dis(self,po1,po2):
dis=(po1.g-po2.g)2+(po1.h-po2.h)2
import math
print math.sqrt(dis)
return dis
a=Len2()
a.set(1,1)
b=Len2()
b.set(5,4)
a.dis(a,b)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号