导入我的 class 并使用它给我一个错误
Importing my class and using it gives me an error
我正在自学python。现在我尝试编写地址簿。
我读到你应该为它使用 class 但我不明白为什么,因为你可以定义你在这个 class 中的每个函数(比如 insertaddress,deletaddres,......)没有一个并使用它喜欢正常的功能。还是我错了?
但是为了练习 classes,我创建了一个:
class Addressbook():
def __init__(self,last,first,street,num,plz,place):
self.last=last
self.first=first
self.street=street
self.num=num
self.plz=plz
self.place=place
def insertadd(self):
text =self.last+" "+self.first+" "+self.street+"
"+self.num+" "+self.plz+" "+self.place+"\n"
with open("addressbook.txt", "a") as file:
file.write(text)
在我的主文件中:
from klassen import Addressbook
k.last= input()
k.first=input()
(...)
k.place = input()
k.insertadd()
但是当我通过 from klassen import Addressbook as k
和 link 将 class 导入我的输入时 class 属性:k.first=input("text")
并尝试执行函数 k.insertadd()
我收到一条错误消息。
NameError: name 'self' is not defined
当我为我的函数提供每个参数作为输入时,我得到一个错误,告诉我 "place" 是一个缺失的参数。
你能帮帮我吗?
你应该做的:
from klassen import Addressbook
k = Addressbook("","","","","","") # Init it with the variables you want!
那你就可以把k当作对象了...
您的做法不是创建地址簿对象的实例,而是使用 class 对象本身...
当要将一组特定功能封装在一起或要抽象功能时,通常可以使用 class。
假设您的 "address book" 包含一组由各种不同应用程序使用的函数。例如,按"phone book"、"messaging application"等。通过将它们中的每一个分隔为 class,您可以更好地控制代码和相关资源,同时减少冗余。因此,可维护性提高。
对于您的代码,您必须初始化所有变量。或者至少将它们传递给您的 init 函数。
从 klassen 导入地址簿
k = 地址簿("bar","foo","15 XYZ street",1234444212,"ABC","New York")
k.insertadd()
或者另一种处理方法是在 init 函数中初始化以默认接受 "None" 参数。
例如:
class 地址簿():
def __init__(self,last,first,street = None,num,plz = None,place = None):
self.last=last
self.first=first
self.street=street
self.num=num
self.plz=plz
self.place=place
现在对象不需要所有参数。
从 klassen 导入地址簿
k = 地址簿(last = "bar",first = "foo",num = 1234444212)
k.insertadd()
我正在自学python。现在我尝试编写地址簿。 我读到你应该为它使用 class 但我不明白为什么,因为你可以定义你在这个 class 中的每个函数(比如 insertaddress,deletaddres,......)没有一个并使用它喜欢正常的功能。还是我错了?
但是为了练习 classes,我创建了一个:
class Addressbook():
def __init__(self,last,first,street,num,plz,place):
self.last=last
self.first=first
self.street=street
self.num=num
self.plz=plz
self.place=place
def insertadd(self):
text =self.last+" "+self.first+" "+self.street+"
"+self.num+" "+self.plz+" "+self.place+"\n"
with open("addressbook.txt", "a") as file:
file.write(text)
在我的主文件中:
from klassen import Addressbook
k.last= input()
k.first=input()
(...)
k.place = input()
k.insertadd()
但是当我通过 from klassen import Addressbook as k
和 link 将 class 导入我的输入时 class 属性:k.first=input("text")
并尝试执行函数 k.insertadd()
我收到一条错误消息。
NameError: name 'self' is not defined
当我为我的函数提供每个参数作为输入时,我得到一个错误,告诉我 "place" 是一个缺失的参数。
你能帮帮我吗?
你应该做的:
from klassen import Addressbook
k = Addressbook("","","","","","") # Init it with the variables you want!
那你就可以把k当作对象了...
您的做法不是创建地址簿对象的实例,而是使用 class 对象本身...
当要将一组特定功能封装在一起或要抽象功能时,通常可以使用 class。
假设您的 "address book" 包含一组由各种不同应用程序使用的函数。例如,按"phone book"、"messaging application"等。通过将它们中的每一个分隔为 class,您可以更好地控制代码和相关资源,同时减少冗余。因此,可维护性提高。
对于您的代码,您必须初始化所有变量。或者至少将它们传递给您的 init 函数。
从 klassen 导入地址簿
k = 地址簿("bar","foo","15 XYZ street",1234444212,"ABC","New York")
k.insertadd()
或者另一种处理方法是在 init 函数中初始化以默认接受 "None" 参数。
例如: class 地址簿():
def __init__(self,last,first,street = None,num,plz = None,place = None):
self.last=last
self.first=first
self.street=street
self.num=num
self.plz=plz
self.place=place
现在对象不需要所有参数。
从 klassen 导入地址簿
k = 地址簿(last = "bar",first = "foo",num = 1234444212)
k.insertadd()