从超类中创建子类 - Python
Create subclass from within superclass - Python
我查看了一些 Whosebug 文章,但找不到我的问题的答案,如果这是重复的,我深表歉意。我能找到的收盘价是 Instantiate subclass from superclass 但这仍然不是我想要的。
所以假设我有三个 class:1 个超级 class 和 2 个子 class,我想做一些奇怪的复制方法,对我所有的 classes。但特别是,我的副本需要是所述对象的新实例。示例:
class Pet(object):
def __init__(self,name):
self._name = name
def weird_copy(self):
name = self._name + " weird"
z = XXX(name)
class Dog(Pet):
def __init__(self,name):
self._name = name + " dog"
class Cat(Pet):
def __init__(self,name):
self._name = name + " cat"
XXX 部分是我不知道该做什么的地方。如果我这样做
d = Dog('ralph')
d2 = d.weird_copy()
我希望 d2 是 Dog 对象而不是 Pet 对象。我尝试用 self 替换 XXX,这开始引起问题。我知道有一种方法可以执行@class方法,但问题是我需要使用自己的属性,所以我不需要将 "self" 切换到 "cls".
谢谢。
type(self)
将 return 引用当前实例的 class 对象。
def weird_copy(self):
name = self._name + " weird"
z = type(self)(name)
return z
我查看了一些 Whosebug 文章,但找不到我的问题的答案,如果这是重复的,我深表歉意。我能找到的收盘价是 Instantiate subclass from superclass 但这仍然不是我想要的。
所以假设我有三个 class:1 个超级 class 和 2 个子 class,我想做一些奇怪的复制方法,对我所有的 classes。但特别是,我的副本需要是所述对象的新实例。示例:
class Pet(object):
def __init__(self,name):
self._name = name
def weird_copy(self):
name = self._name + " weird"
z = XXX(name)
class Dog(Pet):
def __init__(self,name):
self._name = name + " dog"
class Cat(Pet):
def __init__(self,name):
self._name = name + " cat"
XXX 部分是我不知道该做什么的地方。如果我这样做
d = Dog('ralph')
d2 = d.weird_copy()
我希望 d2 是 Dog 对象而不是 Pet 对象。我尝试用 self 替换 XXX,这开始引起问题。我知道有一种方法可以执行@class方法,但问题是我需要使用自己的属性,所以我不需要将 "self" 切换到 "cls".
谢谢。
type(self)
将 return 引用当前实例的 class 对象。
def weird_copy(self):
name = self._name + " weird"
z = type(self)(name)
return z