鱼C论坛

 找回密码
 立即注册
查看: 767|回复: 16

小甲鱼property方法多个属性如何设置属性值啊

[复制链接]
发表于 2018-8-23 20:49:34 | 显示全部楼层 |阅读模式

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

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

x
在学习property(fget,fset,f.del,doc)中向对多个属性赋值如何办?
例如:代码如下

class C:
    def __init__(self,size=10,legs=9):
        self.size=size
        self.legs=legs
    def getsize(self):
        return self.size,self.legs
    def setsize(self,value1,value2):
        self.size=value1
        self.legs=value2
    def delsize(self):
        del self.size
    x=property(getsize,setsize,delsize)
c1 = C()

第一个问题:我对c1.x 返回是个元组(10,9),但是当赋值的时候我怎么也赋值不了,无论是c1.x=(8,4),c1.x(8,4)都不行,问一下怎么赋值?
第二个问题:我进行c1.x+(5,) 在元组后边加了一个变成(10,9,5),帮忙解释一下,紧急是元组相加吗?但是随后就没影响了,如果有第3个变量,这样添加后会不会影响第三个变量赋值?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-8-23 21:02:49 | 显示全部楼层
@claws0n,@塔利班,两位大哥请求帮忙啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-23 21:19:08 | 显示全部楼层
本帖最后由 claws0n 于 2018-8-23 21:22 编辑

1. c1.setsize(8,4)
2. 不是元组相加,元组改不了,用括号表示而已。你多加了一格属性给 c1 这个实例化的对象。不是你原本的第三个变量,而且第三个不是变量,是析构器。如果调用,被实例化的对象讲被销毁。

3. 不是大哥

点评

哈哈,不好意思,查了一下资料。返回的是元组,所以元组不能改。  发表于 2018-8-24 15:02
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-23 21:47:54 | 显示全部楼层
def setsize(self,value):
        self.size=value[0]
        self.legs=value[1]
我表示一天了,脑袋一直超频头有点大,不知道对不对,不行明天再分解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-24 08:59:00 | 显示全部楼层
塔利班 发表于 2018-8-23 21:47
def setsize(self,value):
        self.size=value[0]
        self.legs=value[1]

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

使用道具 举报

 楼主| 发表于 2018-8-24 09:00:36 | 显示全部楼层
claws0n 发表于 2018-8-23 21:19
1. c1.setsize(8,4)
2. 不是元组相加,元组改不了,用括号表示而已。你多加了一格属性给 c1 这个实例化的 ...

大哥,我想用c1.x=的方法对其进行重置啊,不想用c1.setsize()。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-24 15:02:04 | 显示全部楼层
Chysial 发表于 2018-8-24 09:00
大哥,我想用c1.x=的方法对其进行重置啊,不想用c1.setsize()。

1. 哈哈,不好意思,查了一下资料。返回的是元组,所以元组不能改。
2. 我目前找到的是 property 只有读取功能~~

所以修改可以用 c1.size, c1.legs = 8, 4 或者 c1.setsize(8,4)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-24 15:04:14 | 显示全部楼层
claws0n 发表于 2018-8-24 15:02
1. 哈哈,不好意思,查了一下资料。返回的是元组,所以元组不能改。
2. 我目前找到的是 property 只有读 ...

不可能,我设定了修改原则setsize的,小甲鱼视频里也是可以修改的啊,只不过是单个属性
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-24 15:25:07 | 显示全部楼层
Chysial 发表于 2018-8-24 15:04
不可能,我设定了修改原则setsize的,小甲鱼视频里也是可以修改的啊,只不过是单个属性

呼叫塔利班吧,用回帖的方式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-24 15:25:23 | 显示全部楼层
Chysial 发表于 2018-8-24 15:04
不可能,我设定了修改原则setsize的,小甲鱼视频里也是可以修改的啊,只不过是单个属性

呼叫塔利班吧,用回帖的方式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-24 15:45:58 | 显示全部楼层
塔利班 发表于 2018-8-23 21:47
def setsize(self,value):
        self.size=value[0]
        self.legs=value[1]

有空吗,塔利班,有空帮忙想一下,没空就算了,claw0n已经挂了,让我呼叫你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-24 15:49:38 | 显示全部楼层
Chysial 发表于 2018-8-24 15:45
有空吗,塔利班,有空帮忙想一下,没空就算了,claw0n已经挂了,让我呼叫你

看了你们之前的对话我表示不知道你要实现啥功能了

我想用c1.x=的方法对其进行重置啊,不想用c1.setsize()。

这句你赋值就会调用setsize,这是没啥说的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-24 16:04:04 | 显示全部楼层
塔利班 发表于 2018-8-24 15:49
看了你们之前的对话我表示不知道你要实现啥功能了

我想用c1.x=的方法对其进行重置啊,不想用c1.setsiz ...

我想知道,只有一个值得时候,c1.x=值,可行,为啥多属性赋值用c1.x=(值1,值2...)就不行了?有没有直接通过c1.x直接赋值?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-24 16:10:19 | 显示全部楼层
因为你的设定就是要传入2个参数,你用元祖什么的,=也只是默认传一个参数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-24 16:12:28 | 显示全部楼层
所以我建议你把setsize,value1,value2改成value,
这样传参后什么size,legs自己再写好怎么分就完了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-24 16:58:40 | 显示全部楼层
塔利班 发表于 2018-8-24 16:12
所以我建议你把setsize,value1,value2改成value,
这样传参后什么size,legs自己再写好怎么分就完了

一个值,传给几个属性,更觉得不靠谱,算了就这样吧,别纠结了,用得地方比较少应该。谢谢大哥了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 16:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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