我有这样一个类和方法:
class Person(object):
def __init__(self, name):
self.name = personname
self.surname = personsurname
def changenameorsurname(self, x, y):
self.x = y
return
AdamSmith = Person ("Adam", "Smith")
我想使用方法changenameorsurname
来改变AdamSmith
的name
或surname
,但是如果我使用这个代码,我得到的是NameError
">
AdamSmith.changenameorsurname(personname, Dave)
结果:
NameError: name personname is not defined.
有优雅的方式来引用personname
在这样的代码?还是需要像这样创建两个独立的方法?
def changename(self, y):
self.name = y
return
AdamSmith.changename(Dave)
有几个问题。你的init方法需要被修正,这样你才能正确地构造一个Person对象。您可以让您的changenameor姓氏()方法接受一个参数是姓名,另一个参数确定该名称是名还是姓。这里,我将默认值设置为名字。
class Person:
def __init__(self, first_name, surname):
self.first_name = first_name
self.surname = surname
def changenameorsurname(self, name, first = True):
if first:
self.first_name = name
else:
self.surname = name
def __str__(self):
return f'{self.first_name} {self.surname}'
some_guy = Person ("Adam", "Smith")
print(some_guy) #Adam Smith
some_guy.changenameorsurname("Michael")
print(some_guy) #Michael Smith
some_guy.changenameorsurname("Jones", first=False)
print(some_guy) #Michael Jones