[英]Python Programming with Class Definition
到目前为止,这是我的代码,到目前为止我遇到的错误是 (name 'person' is not defined) on line person.name = name
,我真的被卡住并试图找出问题/错误是什么我的代码必须基于我在下面写的问题。我不确定我的其余代码是否有任何错误,因为它首先检测到该错误。
from datetime import date
class person:
pass
def create_person(name, height, birthdate):
person.name = name
person.height = height
get_age = birthdate
return person
def get_age(person):
birthdate = person.birth
today = date.today()
subyear = 0
if today.month < birthdate.month or (today.month == birthdate.day and today.day <= birthdate.day):
subyear = 1
person.age = (today.year - (birthdate.year + subyear))
return person.age
def get_description(person):
return person.name + ' is ' + str(person.height) + ' cm high and is ' + str(get_age(person)) + ' years old'
def main():
birthdate = date(1976, 8, 14)
person = create_person('Michael', 190, birthdate)
print(get_description(person))
这是问题:
为 Person class 编写 class 定义,并使用这些 function 头文件编写用户定义的函数:
def create_person(name, height, birthdate): # Return aa new person object with the given name, height and birthdate. # - name is a str # - height is an int object in centimetres # - birthdate is a date object from the # module datetime
def get_age(person): # Return the age of the person in years.
例如,假设今天的日期是 2018 年 6 月 12 日。如果 Mary 出生于 2017 年 6 月 4 日,那么 Mary 的年龄是 1。但是,如果 Bob 出生于 2018 年 6 月 14 日,那么 Bob 还没有过第一个生日所以年龄为0。
def get_description(person): # Return a string object of the form: Name is # N cm high and is M years old, where N and M # are integers
例如,迈克尔身高 190 厘米,现年 43 岁,或者萨曼莎身高 95 厘米,现年 4 岁。
def main(): # Create a person named 'Michael', with height # 190 cm, who was born on August 14, 1976 and # output a description of this individual.
如果在编写 function 时使用来自导入模块的 function,则通常在代码顶部声明导入语句。
这是一个只调用主 function 的主程序的示例运行。
Michael is 190 cm high and is 43 years old.
这是我目前收到的提示:
使用 datetime 模块中的日期 class 来表示日期。 类型为日期的 object 具有可用于计算人员年龄的年、月和日属性。
要计算一个人的当前年龄,您需要首先计算今天的日期。 在 datetime 模块的日期 class 中有一个方法可以创建一个新的日期 object 来表示当前日期。 这种方法的名称是今天。 但是,此方法的特殊参数必须是日期 class 本身,而不是类型为日期的特定 object。 应用于 class object 而不是该 class 的实例的方法称为 ZA2F2ED4F8EBC2CBB4C21A29DC4 方法。
因此,要创建当前日期,您可以使用以下表达式:
date.today()
因为从 datetime 模块导入日期 class 后,标识符 date 绑定到日期 class object。
要计算年龄,您只需从当前日期的年份属性中减去出生日期的年份属性即可。 但是,您还需要检查此人今年是否已经过生日,如果没有,则减去一年
让Person
创建自己的属性
class Person:
def __init__(self, name, height, birthdate):
self.name = name
self.height = height
self.birthdate = birthdate
# why someone would write such a function is beyond me, but...
def create_person(name, height, birthdate):
return Person(name, height, birthdate)
# test
p = create_person('myname', 100, '23-23-23')
print(p.name)
这产生
myname
现在其他函数将拥有一个可以使用的 class 实例。
如果您对其中任何一个功能有疑问,最好将其发布在另一个仅关注该问题的问题中。 (删除不需要演示问题的功能/方法)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.