hellolouis 发表于 2020-5-26 18:06:50

怎么修改同一class里的属性?

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-26 18:08:18

???不明白

hellolouis 发表于 2020-5-26 18:18:42

永恒的蓝色梦想 发表于 2020-5-26 18:08
???不明白

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

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

永恒的蓝色梦想 发表于 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

Stubborn 发表于 2020-5-26 18:24:44

      if 1+1==2:
            A.num = 1

永恒的蓝色梦想 发表于 2020-5-26 18:25:30

Stubborn 发表于 2020-5-26 18:24


你这样不就把 A 的 num 改变了吗……

Stubborn 发表于 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嘛{:10_261:}

永恒的蓝色梦想 发表于 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 啊……

_2_ 发表于 2020-5-26 18:32:26

本帖最后由 _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

Stubborn 发表于 2020-5-26 18:33:57

永恒的蓝色梦想 发表于 2020-5-26 18:30
但是也不能改变 A 的 num 啊……

那就改实例化的呗,{:10_254:}

hellolouis 发表于 2020-5-26 18:34:28

永恒的蓝色梦想 发表于 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

永恒的蓝色梦想 发表于 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

hellolouis 发表于 2020-5-26 23:11:17

永恒的蓝色梦想 发表于 2020-5-26 18:36


a = B()

a.enter()是等于1

但是想要的是:
a.num 还是等于0

hellolouis 发表于 2020-5-26 23:13:20

_2_ 发表于 2020-5-26 18:32
这里可能会用到一些魔法方法,
如果没有学到就往后看看

这代码运行出错的?

TypeError: __init__() missing 1 required positional argument: 'self'

永恒的蓝色梦想 发表于 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

_2_ 发表于 2020-5-27 13:05:28

hellolouis 发表于 2020-5-26 23:13
这代码运行出错的?

A.__init__(self)
我傻了{:10_269:}

jinlovelive 发表于 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))

页: [1]
查看完整版本: 怎么修改同一class里的属性?