[英]A method to make a Python object change its own class?
我什至不確定這是否可能。 我正在嘗試做的是讓 object 調用一個方法,該方法會將新的 class object 重新分配給變量
定義:
class A():
def __init__(self):
self.number = 1
def becomeB(self):
# a method that will assign this variable a class B object
class B():
def __init__(self):
self.name = "I am B"
我想要達到的目標:
myObj = A()
myObj.becomeB()
print(myObj.name)
Output: I am B
將A
類型的 object 轉換為B
類型沒有任何意義。 相反,我建議您將becomeB
function 以返回 object B。
例如:
class B():
def __init__(self):
self.name = "I am B"
class A():
def __init__(self):
self.number = 1
def becomeB(self):
return B()
myObj = A()
b = myObj.becomeB()
print(b.name) # output: I am B
如果您希望 object 的行為類似於另一個 class 的實例,您可以重新分配__class__
屬性:
def becomeB(self):
self.__class__ = B
這是一個更完整的示例:
class A:
def __init__(self, name):
self.name = name
def foo(self):
return f'A says: Hello {self.name}'
def becomeB(self):
self.__class__ = B
class B:
def foo(self):
return f'B says: Hello {self.name}'
a = A('World')
print(a.foo()) # prints: A says: Hello World
a.becomeB()
print(a.foo()) # prints: B says: Hello World
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.