Có một lớp cơ sở Base
và một phân lớp Special
.Chuyển đổi đối tượng BaseClass thành đối tượng SubClass theo cách tự động?
class Base(object):
def __init__(self, name):
self.name = name
def greet(self):
return 'Hello %s' % self.name
class Special(Base):
def __init__(self, name):
super(Special, self).__init__(name)
def rhyme(self):
return 'Hi %s! How are you? Fine, thanks. What about you?' % self.name
Làm thế nào tôi có thể biến một thể hiện của Base
vào một thể hiện Special
? Hiện nay tôi có một classmethod
xác định trên Special
mà chỉ reassignes __dict__
:
class Special(Base):
...
@classmethod
def from_base(cls, baseobj):
special = Special()
special.__dict__ = baseobj.__dict__
return special
Đây có phải là thành ngữ? Nếu không thì sẽ là gì?
P.S. Một kịch bản ví dụ: Lớp cơ sở là một số thực hiện mặc định. Trong tự nhiên, bạn có thể sẽ tìm thấy các đối tượng của lớp cơ sở. Bây giờ trong một số dự án, lớp cơ sở là các lớp con và các phương thức đặc biệt đã được thêm vào lớp con. Bây giờ bạn chủ yếu vẫn làm việc với các đối tượng lớp cơ sở, nhưng đôi khi bạn sẽ muốn "nâng cấp" lên lớp đặc biệt, vì bạn sẽ cần truy cập vào một số phương thức.
Tại sao nó không thể nhanh chóng hoặc sử dụng vũ lực của 'Special'? –