我正在尝试学习python,现在我正在尝试掌握类的诀窍,以及如何使用实例来操作它们。
我似乎不能理解这个练习问题:
创建并返回一个学生对象,该对象的姓名、年龄和专业与作为输入提供的相同
def make_student(name, age, major)
我只是不明白对象是什么意思,他们的意思是我应该在保存这些值的函数中创建一个数组吗?或者创建一个类,让这个函数在里面,然后分配实例?(在这个问题之前,我被要求设置一个学生班级,里面有姓名、年龄和专业)
class Student:
name = "Unknown name"
age = 0
major = "Unknown major"
发布于 2013-02-26 12:51:35
创建一个类并为其提供一个__init__
方法:
class Student:
def __init__(self, name, age, major):
self.name = name
self.age = age
self.major = major
def is_old(self):
return self.age > 100
现在,您可以初始化Student
类的一个实例:
>>> s = Student('John', 88, None)
>>> s.name
'John'
>>> s.age
88
虽然我不确定如果它和Student.__init__
做同样的事情,为什么还需要一个make_student
学生函数。
发布于 2013-02-26 13:05:05
对象是类的实例。类只是对象的蓝图。所以根据你的类定义-
# Note the added (object) - this is the preferred way of creating new classes
class Student(object):
name = "Unknown name"
age = 0
major = "Unknown major"
您可以通过将属性显式分配给Student
的新实例来创建make_student
函数-
def make_student(name, age, major):
student = Student()
student.name = name
student.age = age
student.major = major
return student
但是在构造函数(__init__
)中做这件事可能更有意义--
class Student(object):
def __init__(self, name="Unknown name", age=0, major="Unknown major"):
self.name = name
self.age = age
self.major = major
当您使用Student()
时,将调用该构造函数。它将接受__init__
方法中定义的参数。构造函数签名现在本质上是Student(name, age, major)
。
如果您使用它,那么make_student
函数是微不足道的(并且是多余的)-
def make_student(name, age, major):
return Student(name, age, major)
为了有趣,这里有一个如何在不定义类的情况下创建make_student
函数的示例。请不要在家里尝试。
def make_student(name, age, major):
return type('Student', (object,),
{'name': name, 'age': age, 'major': major})()
https://stackoverflow.com/questions/15081542
复制相似问题