rebeccaMyKid
V2EX  ›  问与答

子类的变量在父类里用,感觉有点问题,有更好的写法吗?

By rebeccaMyKid at 2017 年 8 月 17 日 · 1362 次点击
#python

class Parent(object):
    def __init__(self):
        pass
    
    def print_sth(self):
        print self.name
        
        
class ChildA(Parent):
    def __init__(self):
        self.name = 'childA'    
        super(ChildA, self).__init__()
    
    
class ChildB(Parent):
    def __init__(self):
        self.name = 'childB'    
        super(ChildB, self).__init__()


class ChildC(Parent):
    def __init__(self):
        self.name = 'childC'    
        super(ChildC, self).__init__()

children = [
    ChildA(),
    ChildB(),
    ChildC()
]

for child in children:
    child.print_sth()

父类有个方法是要用到子类的属性的,然后这个属性又是 hardcode,这样写能跑,但是感觉好像不太好,又想不到其他的方法,面向对象老司机能给点建议吗?

1 条回复  •  2017-08-17 21:32:28 +08:00
wwqgtxx
   1
wwqgtxx  
   2017 年 8 月 17 日 via iPhone   ❤️ 1
在父类的__init__中定义这个 name,然后给父类的__init__加上 name 这个参数,子类在调用 super 的时候把 name 传进去就好了
© 2026 V2EX · 32ms · 3.9.8.5