婴儿级python:类及其使用
我正在学习课程,似乎很难掌握。为了获得一些实践,我编写了以下代码:婴儿级python:类及其使用,python,Python,我正在学习课程,似乎很难掌握。为了获得一些实践,我编写了以下代码: class Customer: def __init__(self, name, age): self.name = name self.age = age def newAge(self): self.age = self.age + 1 def __str__(self): return '{0} ({1})'.format(self.name, self.age) 我想打印
class Customer:
def __init__(self, name, age):
self.name = name
self.age = age
def newAge(self):
self.age = self.age + 1
def __str__(self):
return '{0} ({1})'.format(self.name, self.age)
我想打印客户的年龄,以及他们的新年龄。因此,我有:
p1 = Customer("Amelia",21)
print (p1)
new = p1.newAge()
print (new)
这里的问题是
new
变量没有存储任何内容,因此它打印None
。谁能告诉我为什么我的变量没有存储?我知道我错误地调用了newAge
,但我不知道如何修复它。默认情况下,没有返回的方法语句returnNone
。默认情况下,使newAge()
returnself.age
方法不带return
语句returnNone
。MakenewAge()。如果你在该方法结束时返回self.age
,它将执行我认为你希望它执行的操作 newAge不返回值,因此new=p1.newAge()
返回None
。如果你在该方法结束时返回self.age
,它将执行我认为你希望它执行的操作 虽然其他问题中的建议是正确的-也就是说,您必须有一个带有有意义的值的return
方法,或者您总是返回None
-您不需要将该值存储在类实例之外。这是一个内部更新的值,您可以通过其他方式获得它
可以这样想:一位顾客进来,决定今天是他们的生日,所以他们在年龄上加了一个。这就是newAge
方法有效地实现的功能;它在内部self.age
变量中添加了1
只有当你要求他们表明身份时,你才暴露了他们的实际年龄,他们会告诉你他们的姓名和年龄。这就是\uuuu str\uuuu
方法所实现的;它可以一次性告诉您特定客户的姓名和年龄
因此,如果打印的是p1
,而不是new
,则可以完全省略赋值,代码的行为将与预期的一样
顺便说一下,如果您想添加某种getter,您可以(使用适当的名称)
…或者你可以直接访问该物业,这与我的经历相比更为传统
p1 = Person('Steve?', 27)
print(p1.age) # prints 27
虽然其他问题中的建议是正确的-也就是说,您必须有一个带有有意义的值的return
方法,或者您将始终返回None
-您不需要将该值存储在类实例之外。这是一个内部更新的值,您可以通过其他方式获得它
可以这样想:一位顾客进来,决定今天是他们的生日,所以他们在年龄上加了一个。这就是newAge
方法有效地实现的功能;它在内部self.age
变量中添加了1
只有当你要求他们表明身份时,你才暴露了他们的实际年龄,他们会告诉你他们的姓名和年龄。这就是\uuuu str\uuuu
方法所实现的;它可以一次性告诉您特定客户的姓名和年龄
因此,如果打印的是p1
,而不是new
,则可以完全省略赋值,代码的行为将与预期的一样
顺便说一下,如果您想添加某种getter,您可以(使用适当的名称)
…或者你可以直接访问该物业,这与我的经历相比更为传统
p1 = Person('Steve?', 27)
print(p1.age) # prints 27
不是你错了。我觉得你忽略了真正的误解,不是你错了。我觉得你忽略了实际的误解。没有返回声明解决问题有可能吗?没有返回声明解决问题有可能吗?