使用可选参数子类化python类

2024-09-30 02:14:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python还不熟悉。我有这个密码:

class SomeClass(OtherClass):
    name = "whatever"
    task = "nothing"

现在,我想创建一个子类,这样,我就可以像这样实例化它:

child = ChildClass(task = "sometask")
child.name #=> "whatever"
child.task #=> "sometask"
child2 = ChildClass()
child2.task #=> "nothing"

我该怎么做


Tags: 实例namechild密码task子类classwhatever
2条回答

您需要覆盖它的初始值设定项(有点像其他语言中的构造函数):

>>> class SomeClass:
...   name='whatever'
...   task='nothing'
...
>>> class ChildClass(SomeClass):
...   def __init__(self, name=None, task=None):
...     if name is not None:
...       self.name = name
...     if task is not None:
...       self.task = task
...
>>> child = ChildClass(task='sometask')
>>> child.name
'whatever'
>>> child.task
'sometask'
>>> child2 = ChildClass()
>>> child2.task
'nothing'

首先,您需要注意,您是在SomeClass中创建类变量,而不是实例变量

class SomeClass(object):
    def __init__(self, name = "whatever", task = "nothing"):
        self.name = name
        self.task = task

现在我们设计了一个类,它接受两个带有默认值的关键字参数。因此,如果不向其中任何一个传递值,默认情况下whatever将被分配给namenothing将被分配给task

class ChildClass(SomeClass):
    def __init__(self, name = "whatever", task = "nothing"):
        super(ChildClass, self).__init__(name, task)

child1 = ChildClass(task = "sometask")
print child1.name, child1.task
# whatever sometask
child2 = ChildClass()
print child2.name, child2.task
# whatever nothing

相关问题 更多 >

    热门问题