继承初始化

时间:2018-07-21 20:17:45

标签: python python-3.x class inheritance

Class Contact():
    def __init__(self, name, phone):
        self.obj1 = obj1
        self.obj2 = obj2

Class Phonebook():
    def __init__(self):
        # leave this empty for now

    def add(self, contact):
        contact = Contact()

contact1 = Contact('Name', '000')
a = Phonebook()
a.add(contact1)

我在做什么错了?
还有另一种初始化方法吗?
我试图在班级中建立联系,然后在创建它之后,将其添加到电话簿中。

2 个答案:

答案 0 :(得分:1)

如果要将联系人添加到电话簿中,则需要某种存储方式,因此构造函数不能为空。它需要一个列表

class Phonebook():
    def __init__(self):
        self.items = [] 

    def add(self, contact):
        self.items.append(contact)

您已经创建了一个Contact对象,因此不需要在add函数中再创建一个

答案 1 :(得分:1)

此代码存在许多问题。


首先,正如Azat Ibrakov指出的,6 x 46917 sparse Matrix of class "dgCMatrix" [[ suppressing 20 column names ‘date2013-01-02’, ‘date2013-01-03’, ‘date2013-01-04’ ... ]] 108928 . . . . . . . . . . . . . . . . . . . . 596163 . . . . . . . . . . . . . . . . . . . . 583686 . . . . . . . . . . . . . . . . . . . . 597198 . . . . . . . . . . . . . . . . . . . . 824757 . . . . . . . . . . . . . . . . . . . . 613418 . . . . . . . . . . . . . . . . . . . . 108928 ...... 596163 ...... 583686 ...... 597198 ...... 824757 ...... 613418 ...... .....suppressing columns in show(); maybe adjust 'options(max.print= *, width = *)' .............................. 不是有效的关键字;您想要Class

尽管我们class 有效有效,但实际上没有理由加上空括号。

所以:

class Contact():

接下来,class Contact: 尝试使用名为Contact.__init__obj1的不存在的变量,它们将因obj2而失败。

它也使用名为NameErrorname的参数,但从不使用它们。大概就是您要存储的值。

虽然这不是错误,但将名称和电话号码存储在名为phoneobj1的属性中并不是很有用;给他们有意义的属性名称。

所以:

obj2

接下来,class Contact: def __init__(self, name, phone): self.name = name self.phone = phone 尝试创建一个新的Phonebook.add,但是不将Contactname的参数传递给它,因此将以{{1 }}。

但是您应该通过哪些论点?您没有名字或电话号码。

要做有一个phone参数。您正在尝试舍弃该值,并用全新的TypeError对象代替它,但是为什么要这样做呢?您肯定要使用传入的密码。

因此,要修复contact…,实际上根本没有任何事情可做:

Contact

但是您的目标是将联系人添加到电话簿中。这意味着您必须将这些联系人存储在某个地方。

电话簿就像一本字典,您可以在其中查找姓名的联系信息。因此,让我们使用Phonebook.add。这应该是class Phonebook: def __init__(self): # leave this empty for now def add(self, contact): # leave this empty too 对象的属性,这意味着我们想在dict中创建它,因此以后我们可以在其他方法中使用它,例如Phonebook

__init__