相关疑难解决方法(0)

返回 Python 中的类的实例

我正在尝试学习 Python 中的面向对象编程,但我对如何返回类的实例有点困惑。

我所拥有的代码的一些背景: Contact 类应该有一个必需的(完整)姓名、零个或多个电话号码以及零个或多个联系人的电子邮件地址。AddressBook 类采用联系人列表(定义如上),并且“add_contact”方法假设即使在创建联系人后也会将联系人添加到地址簿中。

class Contact:
    def __init__(self, name = None, addresses = False, email_addresses = False):
        self.name = name
        self.addresses = addresses
        self.email_addresses = email_addresses
class AddressBook:
    def __init__(self, contacts = []):
        self.contacts = contacts
    def add_contact(self,new_contact):
        self.contacts.append(new_contact)
    def contact_by_name(self, person):
        return Contact(name = person)
Run Code Online (Sandbox Code Playgroud)

所以我想要实现的是“contact_by_name”方法将采用名称(字符串)并返回具有给定名称的联系人 - 即它返回 Contact 的实例。

例子:

julian = Contact(name="Julian Berman")
book = AddressBook(contacts=[julian])
Run Code Online (Sandbox Code Playgroud)

我想要的是:

book.contact_by_name("Julian Berman") == julian
Run Code Online (Sandbox Code Playgroud)

我尽力给出“contact_by_name”方法的代码,但它一直给我错误,有人可以发送帮助吗!谢谢!

python class

0
推荐指数
1
解决办法
390
查看次数

Python - 覆盖导入文件中的常量并在导入函数中使用

我有一个模块,其中定义了一些常量,并在多个函数中使用。我如何从我的主文件中覆盖它们的值?

说这是模块,test_import.py

MY_CONST = 1

def my_func(var = MY_CONST):
    print(var)
Run Code Online (Sandbox Code Playgroud)

这是我的main.py文件:

import test_import

MY_CONST = 2
test_import.MY_CONST = 3

test_import.my_func()
Run Code Online (Sandbox Code Playgroud)

这段代码仍然打印“1”。我希望它打印一些其他值(显然,在调用时不传递值my_func()

python python-import

0
推荐指数
1
解决办法
62
查看次数

Python列出了混乱

可能重复:
Python中的"最小惊讶":Mutable Default Argument
Python列表混乱

我对Python中的列表列表感到有些困惑.我有这两个片段:

li1 = [['a'], ['a'], ['a']]
print li1
for i in range(0, len(li1)):
    li1[i] += [i]
print li1

li2 = [['a']] * 3
print li2
for i in range(0, len(li2)):
    li2[i] += [i]
print li2
Run Code Online (Sandbox Code Playgroud)

创建后li1和li2是相同的,但是当我添加元素时,它们的行为有所不同:

[['a'], ['a'], ['a']]
[['a', 0], ['a', 1], ['a', 2]]
[['a'], ['a'], ['a']]
[['a', 0, 1, 2], ['a', 0, 1, 2], ['a', 0, 1, 2]]
Run Code Online (Sandbox Code Playgroud)

有人可以解释诀窍在哪里?

python list

-1
推荐指数
1
解决办法
83
查看次数

如何每次都创建一个新的默认参数列表

我有以下设置:

def returnList(arg=["abc"]):
    return arg

list1 = returnList()
list2 = returnList()

list2.append("def")

print("list1: " + " ".join(list1) + "\n" + "list2: " + " ".join(list2) + "\n")

print(id(list1))
print(id(list2))
Run Code Online (Sandbox Code Playgroud)

输出:

list1: abc def
list2: abc def

140218365917160
140218365917160
Run Code Online (Sandbox Code Playgroud)

我可以看到arg = ["abc"]返回相同默认列表的副本,而不是每次都创建一个新列表.

我试过了

def returnList(arg=["abc"][:]):
Run Code Online (Sandbox Code Playgroud)

def returnList(arg=list(["abc"])):
Run Code Online (Sandbox Code Playgroud)

是否有可能获得一个新列表,或者每次我想要某种默认值时都必须在方法中复制列表?

python default

-1
推荐指数
1
解决办法
175
查看次数

为什么附加到字典中的列表有不同的结果?

Python 3.7.6(默认,2020 年 1 月 8 日,20:23:39)[MSC v.1916 64 位 (AMD64)]

my_list = ["a","b","c"]

dict_one = {key:[] for key in my_list}
print(dict_one)
{'a': [], 'b': [], 'c': []}

dict_two = dict.fromkeys(my_list, [])
print(dict_two)
{'a': [], 'b': [], 'c': []}

dict_one['a'].append('some_data')
dict_two['a'].append('some_data')

print(dict_one)
{'a': ['some_data'], 'b': [], 'c': []}

print(dict_two)
{'a': ['some_data'], 'b': ['some_data'], 'c': ['some_data']}
Run Code Online (Sandbox Code Playgroud)

我对 dict_one 和 dict_two 期望相同的结果。谁能解释一下区别?

python dictionary list append

-1
推荐指数
1
解决办法
63
查看次数

如何使用可选参数自定义Python函数?

这里有很多关于这类问题的讨论,但我没有看到任何关于如何实现这样一个函数的内容.

假设我有一个内部Foo()有函数的类bar().

该函数bar()接受no或只有一个参数.当它什么都没有时,属性被设置为2.否则,它被设置为输入的任何值.即

In [32]: foo = Foo()
In [33]: foo.bar()
In [34]: foo.a
Out [34]: 2
Run Code Online (Sandbox Code Playgroud)

In [32]: foo = Foo()
In [33]: foo.bar(5)
In [34]: foo.a
Out [34]: 5
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

python

-3
推荐指数
1
解决办法
83
查看次数

标签 统计

python ×6

list ×2

append ×1

class ×1

default ×1

dictionary ×1

python-import ×1