簡體   English   中英

一種方法讓一個Python object改變自己的class?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM