为什么在将输入值传递给函数参数时会出错,而在静态分配时却不会?
Why do I get an error when passing input value into function parameter but not when statically assigning it?
当我在“printPeople”参数中手动输入“alex”时,代码打印正常。
class people:
name = ''
age = ''
alex = people()
alex.name = 'Alex'
alex.age = '25'
clarance = people()
clarance.name = 'Clarance'
clarance.age = '24'
def printPeople(person):
print('-' * 20)
print('Name:', person.name)
print('Age:', person.age)
print('-' * 20)
printPeople(alex)
但是,如果我尝试使用输入功能手动选择名称:
class people:
name = ''
age = ''
alex = people()
alex.name = 'Alex'
alex.age = '25'
clarance = people()
clarance.name = 'Clarance'
clarance.age = '24'
def printPeople(person):
print('-' * 20)
print('Name:', person.name)
print('Age:', person.age)
print('-' * 20)
userInput = input('Enter name: ')
printPeople(userInput)
我收到一个错误:
AttributeError: 'str' object has no attribute 'name'
alex
是一个变量
printPeople(alex)
不是像 input
returns
这样的 str
值
# Wrong
printPeople("alex")
如果您希望在程序中输入 select 数据,请使用 dict
,您可以使用用户输入对其进行索引。
people_data = {"alex": alex}
...
printPeople(people_data[userInput])
您的 printPeople
函数需要一个 people
值,或者至少是具有 name
和 age
属性的某个值。当您调用 printPeople(input())
时,您将一个字符串传递给 printPeople
。该字符串没有所需的属性。
您正在传递一个字符串对象,但它没有属性名称。
你必须知道在 python 中一切都是对象。
在这两行中,您试图访问实例的属性名称和年龄,因此出现错误。
打印('Name:',person.name)
打印('Age:', person.age)
当我在“printPeople”参数中手动输入“alex”时,代码打印正常。
class people:
name = ''
age = ''
alex = people()
alex.name = 'Alex'
alex.age = '25'
clarance = people()
clarance.name = 'Clarance'
clarance.age = '24'
def printPeople(person):
print('-' * 20)
print('Name:', person.name)
print('Age:', person.age)
print('-' * 20)
printPeople(alex)
但是,如果我尝试使用输入功能手动选择名称:
class people:
name = ''
age = ''
alex = people()
alex.name = 'Alex'
alex.age = '25'
clarance = people()
clarance.name = 'Clarance'
clarance.age = '24'
def printPeople(person):
print('-' * 20)
print('Name:', person.name)
print('Age:', person.age)
print('-' * 20)
userInput = input('Enter name: ')
printPeople(userInput)
我收到一个错误:
AttributeError: 'str' object has no attribute 'name'
alex
是一个变量
printPeople(alex)
不是像 input
returns
str
值
# Wrong
printPeople("alex")
如果您希望在程序中输入 select 数据,请使用 dict
,您可以使用用户输入对其进行索引。
people_data = {"alex": alex}
...
printPeople(people_data[userInput])
您的 printPeople
函数需要一个 people
值,或者至少是具有 name
和 age
属性的某个值。当您调用 printPeople(input())
时,您将一个字符串传递给 printPeople
。该字符串没有所需的属性。
您正在传递一个字符串对象,但它没有属性名称。 你必须知道在 python 中一切都是对象。
在这两行中,您试图访问实例的属性名称和年龄,因此出现错误。 打印('Name:',person.name) 打印('Age:', person.age)