鱼C论坛

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

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

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

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

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

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

  1. class A():
  2.     num =0

  3. class B(A):
  4.     def enter(self):
  5.         if 1+1==2:
  6.             num = 1
  7.         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,那就建个实例变量
  1. class A():
  2.     num =0
  3. class B(A):
  4.     def __inti__(self):
  5.         self.num = 0
  6.     def enter(self):
  7.         if 1+1==2:
  8.             num = 1
  9.         return num
  10. a = B()
  11. print('a.enter()=%d\na.num=%d'%(a.enter(),a.num))

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-26 18:08:18 | 显示全部楼层
???不明白
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

现在想在class B 添加个判断,True的时候,num=1
小甲鱼最新课程 -> https://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

这样?
  1. class B(A):
  2.     if 1+1==2:
  3.         num = 1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 18:24:44 | 显示全部楼层
  1.         if 1+1==2:
  2.             A.num = 1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

你这样不就把 A 的 num 改变了吗……
小甲鱼最新课程 -> https://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嘛
小甲鱼最新课程 -> https://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 啊……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

  4. class B(A):
  5.     def __init__(self):
  6.         A.__init__(self)
  7.         if 1 + 1 == 2:
  8.             self.num = 1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

那就改实例化的呗,
小甲鱼最新课程 -> https://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
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

class B(A):
  1. class A():
  2.     num =0

  3. class B(A):
  4.     def enter(self):
  5.         if 1+1==2:
  6.             self.num = 1
  7.         return self.num
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

a = B()

a.enter()  是等于1

但是想要的是:
a.num 还是等于0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

这代码运行出错的?

  1. TypeError: __init__() missing 1 required positional argument: 'self'
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

a.enter()  是等于1

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

  3. class B(A):
  4.     def enter(self):
  5.         if 1+1==2:
  6.             return 1
  7.         return self.num
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

A.__init__(self)
我傻了
小甲鱼最新课程 -> https://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,那就建个实例变量
  1. class A():
  2.     num =0
  3. class B(A):
  4.     def __inti__(self):
  5.         self.num = 0
  6.     def enter(self):
  7.         if 1+1==2:
  8.             num = 1
  9.         return num
  10. a = B()
  11. print('a.enter()=%d\na.num=%d'%(a.enter(),a.num))

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-20 19:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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