wwj520 发表于 2021-4-26 23:43:09

为什么属性y可以改变,而x不可以改变

class Transfrom1 :
    def __init__(self,x=0,y=0) :
      self.y=y
      self.x=x

class Transfrom(Transfrom1) :
    def __init__(self,x=0,y=0) :
      self.transfrom1=Transfrom1(x,y)
    def change(self):
      titel=input('请选择主题(华氏温度、摄氏温度):')
      if titel=='华氏温度' :
            self.y=eval(input('请输入华氏温度:'))
            return (self.y-32)/1.8
      elif titel=='摄氏温度' :
            self.x=eval(input('请输入摄氏温度:'))
            return self.x*1.8+32
      else :
            print('你输入的格式不对,这里只能输入一个数字')
    x=property(change)
   
def founction():
    s=input('是否继续执行(是、否):')
    if s=="是" :
      c=Transfrom()
      c.x
      return founction()
    else :
      print('')
c=Transfrom()
c.x
founction()




错误:
Traceback (most recent call last):
File "D:/python(学习站)/dc.py", line 30, in <module>
    c.x
File "D:/python(学习站)/dc.py", line 12, in change
    self.x=eval(input('请输入摄氏温度:'))
AttributeError: can't set attribute

逃兵 发表于 2021-4-27 08:58:25

类方法和类属性变量名污染了

class Transfrom1 :
    def __init__(self,x=0,y=0) :
      self.y=y
      self.x=x

class Transfrom(Transfrom1) :
    def __init__(self,x=0,y=0) :
      self.transfrom1=Transfrom1(x,y)
    def change(self):
      titel=input('请选择主题(华氏温度、摄氏温度):')
      if titel=='华氏温度' :
            self.y=eval(input('请输入华氏温度:'))
            return (self.y-32)/1.8
      elif titel=='摄氏温度' :
            self.x=eval(input('请输入摄氏温度:'))
            return self.x*1.8+32
      else :
            print('你输入的格式不对,这里只能输入一个数字')
    z=property(change)
   
def founction():
    s=input('是否继续执行(是、否):')
    if s=="是" :
      c=Transfrom()
      c.z
      return founction()
    else :
      print('')
c=Transfrom()
c.z
founction()

wwj520 发表于 2021-4-27 20:53:04

逃兵 发表于 2021-4-27 08:58
类方法和类属性变量名污染了

谢了,谢了
页: [1]
查看完整版本: 为什么属性y可以改变,而x不可以改变