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

2017-08-17 18:32:42 +08:00
 rebeccaMyKid
#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,这样写能跑,但是感觉好像不太好,又想不到其他的方法,面向对象老司机能给点建议吗?

819 次点击
所在节点    问与答
1 条回复
wwqgtxx
2017-08-17 21:32:28 +08:00
在父类的__init__中定义这个 name,然后给父类的__init__加上 name 这个参数,子类在调用 super 的时候把 name 传进去就好了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/383760

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX