鱼C论坛

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

[已解决]怎么修改同一class里的属性?

[复制链接]
发表于 2020-5-26 18:06:50 | 显示全部楼层 |阅读模式

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

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

x
B继承了A的num,如果1+1==2,继承的num==1,应该怎么实现?
class A():
    num =0

class B(A):
    def enter(self):
        if 1+1==2:
            num = 1
        return num
最佳答案
2020-5-28 08:32:18
hellolouis 发表于 2020-5-26 23:11
a = B()

a.enter()  是等于1

a.num想等于0,又要保持a.enter() == 1,那就建个实例变量
class A():
    num =0
class B(A):
    def __inti__(self):
        self.num = 0
    def enter(self):
        if 1+1==2:
            num = 1
        return num
a = B()
print('a.enter()=%d\na.num=%d'%(a.enter(),a.num))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-26 18:08:18 | 显示全部楼层
???不明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-26 18:18:42 | 显示全部楼层

就是说class B继承A,那么class B也是num =0。

现在想在class B 添加个判断,True的时候,num=1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 18:23:04 | 显示全部楼层
hellolouis 发表于 2020-5-26 18:18
就是说class B继承A,那么class B也是num =0。

现在想在class B 添加个判断,True的时候,num=1

这样?
class B(A):
    if 1+1==2:
        num = 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 18:24:44 | 显示全部楼层
        if 1+1==2:
            A.num = 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 18:25:30 | 显示全部楼层

你这样不就把 A 的 num 改变了吗……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 18:28:08 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-26 18:25
你这样不就把 A 的 num 改变了吗……

就是说class B继承A,那么class B也是num =0。

现在想在class B 添加个判断,True的时候,num=1

不是想B的num=1嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 18:30:22 | 显示全部楼层
Stubborn 发表于 2020-5-26 18:28
就是说class B继承A,那么class B也是num =0。

现在想在class B 添加个判断,True的时候,num=1

但是也不能改变 A 的 num 啊……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 18:32:26 From FishC Mobile | 显示全部楼层
本帖最后由 _2_ 于 2020-5-27 13:05 编辑

这里可能会用到一些魔法方法,
如果没有学到就往后看看
class A:
    def __init__(self):
        self.num = 0

class B(A):
    def __init__(self):
        A.__init__(self)
        if 1 + 1 == 2:
            self.num = 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 18:33:57 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-26 18:30
但是也不能改变 A 的 num 啊……

那就改实例化的呗,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-26 18:34:28 From FishC Mobile | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-26 18:23
这样?

只能这样吗?我想在def里面做判断,比如

class B(A):
    num =0
    def enter(self):
        if 1+1=2:
        ………
## 如果True,num就等于1

想要这结果:

a = B()
a.num==1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 18:36:10 | 显示全部楼层
hellolouis 发表于 2020-5-26 18:34
只能这样吗?我想在def里面做判断,比如

class B(A):
class A():
    num =0

class B(A):
    def enter(self):
        if 1+1==2:
            self.num = 1
        return self.num
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-26 23:11:17 | 显示全部楼层

a = B()

a.enter()  是等于1

但是想要的是:
a.num 还是等于0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-26 23:13:20 | 显示全部楼层
_2_ 发表于 2020-5-26 18:32
这里可能会用到一些魔法方法,
如果没有学到就往后看看

这代码运行出错的?
TypeError: __init__() missing 1 required positional argument: 'self'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-27 08:01:58 | 显示全部楼层
hellolouis 发表于 2020-5-26 23:11
a = B()

a.enter()  是等于1

你描述的绝了……
class A():
    num =0

class B(A):
    def enter(self):
        if 1+1==2:
            return 1
        return self.num
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-27 13:05:28 From FishC Mobile | 显示全部楼层
hellolouis 发表于 2020-5-26 23:13
这代码运行出错的?

A.__init__(self)
我傻了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-28 08:32:18 | 显示全部楼层    本楼为最佳答案   
hellolouis 发表于 2020-5-26 23:11
a = B()

a.enter()  是等于1

a.num想等于0,又要保持a.enter() == 1,那就建个实例变量
class A():
    num =0
class B(A):
    def __inti__(self):
        self.num = 0
    def enter(self):
        if 1+1==2:
            num = 1
        return num
a = B()
print('a.enter()=%d\na.num=%d'%(a.enter(),a.num))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-21 00:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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