我想将类型A的对象强制转换为B类,因此我可以使用B的方法。类型B继承A.例如,我有类我的类B:
class B(A):
def hello(self):
print('Hello, I am an object of type B')
My Library,Foo,有一个返回A类对象的函数,我想将它转换为B类。
>>>import Foo
>>>a_thing = Foo.getAThing()
>>>type(a_thing)
A
>>># Somehow cast a_thing to type B
>>>a_thing.hello()
Hello, I am an object of type B
答案 0 :(得分:1)
执行此操作的常用方法是为B编写一个类方法,该方法接受A对象并使用其中的信息创建新的B对象。
class B(A):
@classmethod
def from_A(cls, A_obj):
value = A.value
other_value = A.other_value
return B(value, other_value)
a_thing = B.from_A(a_thing)
答案 1 :(得分:0)
AFAIK,Python中没有子类。您可以做的是创建另一个对象并复制所有属性。您的B类构造函数应该使用类型A的参数来复制所有属性:
class B(A):
def __init__(self, other):
# Copy attributes only if other is of good type
if isintance(other, A):
self.__dict__ = other.__dict__.copy()
def hello(self):
print('Hello, I am an object of type B')
然后你可以写:
>>> a = A()
>>> a.hello()
Hello, I am an object of type A
>>> a = B(a)
>>> a.hello()
Hello, I am an object of type B