鱼C论坛

 找回密码
 立即注册
查看: 1120|回复: 4

[已解决]Python 38讲动动手求助大佬

[复制链接]
发表于 2019-1-12 23:12:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这是我自己写的代码

  1. import math

  2. class Point1:

  3.     p1 = [0,0]

  4.     def getp1(self):
  5.         self.p1[0] = int(input("请输入一个点的坐标x轴的数值:"))
  6.         self.p1[1] = int(input("请输入一个点的坐标y轴的数值:"))

  7. class Line:

  8.     def __init__(self):
  9.         P1 = Point1()
  10.         P2 = Point1()
  11.         
  12.         print("输入点P1的坐标:")
  13.         P1.getp1()
  14.               
  15.         print("输入点P2的坐标:")
  16.         P2.getp1()

  17.         print(P1.p1)
  18.         print(P2.p1)

  19.     def getLen(self):

  20.         length = math.sqrt((P1.p1[0] - P2.p1[0])**2 + (P1.p1[1] - P2.p1[1])**2)

  21.         print(length)

  22. l = Line()
复制代码


结果是两个点的坐标都变成第二次输入的了
最佳答案
2019-1-13 09:49:58
本帖最后由 heidern0612 于 2019-1-13 09:51 编辑

类属性是共享的,所以一样。


下面这么写就没毛病了:

  1. import math

  2. class Point1:
  3.     def __init__(self):
  4.         self.p1 = [0,0]
  5.    
  6.     def getp1(self):
  7.         self.p1[0] = int(input("请输入一个点的坐标x轴的数值:"))
  8.         self.p1[1] = int(input("请输入一个点的坐标y轴的数值:"))

  9. class Line:

  10.     def __init__(self):
  11.         P1 = Point1()
  12.         P2 = Point1()
  13.         
  14.         print("输入点P1的坐标:")
  15.         P1.getp1()
  16.               
  17.         print("输入点P2的坐标:")
  18.         P2.getp1()

  19.         print(P1.p1)
  20.         print(P2.p1)

  21.     def getLen(self):

  22.         length = math.sqrt((P1.p1[0] - P2.p1[0])**2 + (P1.p1[1] - P2.p1[1])**2)

  23.         print(length)

  24. l = Line()
复制代码
求助0.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-1-13 09:43:16 | 显示全部楼层
你没有定义实例属性,用的类属性
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-13 09:49:58 | 显示全部楼层    本楼为最佳答案   
本帖最后由 heidern0612 于 2019-1-13 09:51 编辑

类属性是共享的,所以一样。


下面这么写就没毛病了:

  1. import math

  2. class Point1:
  3.     def __init__(self):
  4.         self.p1 = [0,0]
  5.    
  6.     def getp1(self):
  7.         self.p1[0] = int(input("请输入一个点的坐标x轴的数值:"))
  8.         self.p1[1] = int(input("请输入一个点的坐标y轴的数值:"))

  9. class Line:

  10.     def __init__(self):
  11.         P1 = Point1()
  12.         P2 = Point1()
  13.         
  14.         print("输入点P1的坐标:")
  15.         P1.getp1()
  16.               
  17.         print("输入点P2的坐标:")
  18.         P2.getp1()

  19.         print(P1.p1)
  20.         print(P2.p1)

  21.     def getLen(self):

  22.         length = math.sqrt((P1.p1[0] - P2.p1[0])**2 + (P1.p1[1] - P2.p1[1])**2)

  23.         print(length)

  24. l = Line()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-13 13:56:30 | 显示全部楼层
heidern0612 发表于 2019-1-13 09:49
类属性是共享的,所以一样。

明白了,感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-13 13:58:36 | 显示全部楼层
塔利班 发表于 2019-1-13 09:43
你没有定义实例属性,用的类属性

嗖嘎!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-4-1 20:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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