鱼C论坛

 找回密码
 立即注册
查看: 1914|回复: 3

[已解决]为什么属性y可以改变,而x不可以改变

[复制链接]
发表于 2021-4-26 23:43:09 | 显示全部楼层 |阅读模式

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

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

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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-27 20:53:04 | 显示全部楼层
逃兵 发表于 2021-4-27 08:58
类方法和类属性变量名污染了

谢了,谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 21:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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