Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
289 views
in Technique[技术] by (71.8m points)

python - Type cast between custom inherited classes

I from the program below I want the instance of B to call the method in A but I have no idea how to type cast the object in order for the object to call the method in A which has the same name in B and so the method in A runs but not the one in B.

class A:
def doSomething(self):
    print("do something in A")

class B(A):
def doSomething(self):
    print('do something in B')

def main():
b = B()
b.doSomething()
(A)b.doSomething() # I want b to call the function in A instead of B

main()
question from:https://stackoverflow.com/questions/65912483/type-cast-between-custom-inherited-classes

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

If all you want to do is call the super class method doSomething on b, this should suffice:

class A(object):

    def doSomething(self):
        print('Do something in A')


class B(A):

    def doSomething(self):
        print('Do something in B')


b = B()
super(B, b).doSomething()

Which prints:

Do something in A

The idea of "type casting" isn't really applicable in python.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...