我试图给我的子类默认变量,并在文件变胖时停止重复代码:
class Base(object):
def __init__(self, username=None, password=None, start_url=None):
self.username = username
self.password = password
self.start_url = start_url
class Subclass(Base):
def __init__(self, username="hoss_it87", password="whatsgoodSO", start_url="www.boss-sauce.com"):
super(Subclass, self).__init__()
Base
当然可以,但是我想Subclass
以同样的方式初始化,只是None
用真实的字符串覆盖(所有登录样式都是相似的)。
In [12]: x = Base('myuser', 'mypassword', 'www.google.com')
In [13]: x.username
Out[13]: 'myuser'
In [14]: x.start_url
Out[14]: 'www.google.com'
In [15]: y = Subclass()
In [16]: y.username
In [17]: y.start_url
In [18]: y.password
In [19]:
为什么我什么都没得到Subclass
属性,该如何解决?谢谢
请注意,删除基类默认设置会导致其他问题
class Base(object):
def __init__(self, username, password, start_url):
self.username = username
self.password = password
self.start_url = start_url
class Subclass(Base):
def __init__(self, username="honeybooboosbiggestfan", password="toomuchburkerking", start_url="www.imjokingiprefericeroadtruckers.com"):
super(Subclass, self).__init__()
In [24]: y = Subclass()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-24-55b9b4fdf93b> in <module>()
----> 1 y = Subclass()
<ipython-input-23-a9dc62450db7> in __init__(self, username, password, start_url)
9
10 def __init__(self, username="honeybooboosbiggestfan", password="toomuchburkerking", start_url="www.imjokingiprefericeroadtruckers.com"):
---> 11 super(Subclass, self).__init__()
TypeError: __init__() takes exactly 4 arguments (1 given)
In [25]:
解决了:
class Base(object):
def __init__(self, username, password, start_url):
self.username = username
self.password = password
self.start_url = start_url
class Subclass(Base):
def __init__(self, username="honeybooboosbiggestfan", password="toomuchburkerking", start_url="www.imjokingiprefericeroadtruckers.com"):
super(Subclass, self).__init__(username=username, password=password, start_url=start_url)
## -- End pasted text --
In [26]: y = Subclass()
In [27]: y.username
Out[27]: 'honeybooboosbiggestfan'
In [28]:
您必须将参数从SubClass
init 传递到以下内容的init块Base
:
class Subclass(Base):
def __init__(self, username="hoss_it87", password="whatsgoodSO", start_url="www.boss-sauce.com"):
super(Subclass, self).__init__(username=username, password=password, start_url=start_url)
在您的代码中,Base
调用init时不带参数,因此采用其默认参数all None
。
我正在用Lombok插件做一个Spring项目。我添加了注释,并使父类的字段最终初始化,使用@AllArgsConstructor或@必需ArgsConstructor而不是字段注入(使用类字段的@autowed)。但是,由于某种原因,子类DraftsPostmethod报告了一条消息,即在父类AbstractFuntoryServicemethod中没有找到默认构造函数 我不确定是什么导致了它,
问题内容: 如何从父类中调用子类的函数?考虑一下: 问题答案: 那就是抽象类的目的。抽象类基本上说:从我那里继承的任何人都必须具有此功能(或这些功能)。
问题内容: 在Python中创建简单的对象层次结构时,我希望能够从派生类中调用父类的方法。在Perl和Java中,有一个用于此的关键字()。在Perl中,我可以这样做: 在Python中,似乎必须从子代中明确命名父类。在上面的示例中,我将不得不执行。 这似乎不正确,因为这种行为使创建深层次结构变得困难。如果孩子们需要知道哪个类定义了一个继承的方法,那么就会造成各种各样的信息痛苦。 这是python
这是我的代码想要使用AdapterVersion(父类)的对象引用访问AdapterVer1 getAdaptObj1()的子类方法(没有类型转换)
这是一个与实现相关的问题,或者我可能想多了。假设我有一个子类继承了父类。根据我的理解,它将继承父类的方法定义,而不是构造函数。我们需要通过超级方法调用提供或编译器将提供构造函数。我们这样做的原因是,如果没有父类对象实例,我们从子类中的父类获得的方法定义将不存在。 这是否意味着,当我调用父类对象定义的方法(该方法尚未在子类中重写)时,将在父对象实例的子类内部调用?我在想,由于子类会调用父类构造函数并
本文向大家介绍C#中子类调用父类的实现方法,包括了C#中子类调用父类的实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#中实现子类调用父类的方法,分享给大家供大家参考之用。具体方法如下: 一、通过子类无参构造函数创建子类实例 创建父类Person和子类Student。 在客户端通过子类无参构造函数创建子类实例。 输出结果: 可见:通过调用子类无参构造函数创建子类实例,会默认调用父