Python,创建对象

我正在学习 python,现在我正在尝试掌握类的窍门以及如何用实例操作它们。

我似乎无法理解这个练习题:

创建并返回名称、年龄和专业为 与输入相同

def make_student(name, age, major)

我不明白对象是什么意思它们是否意味着我应该在函数中创建一个数组来保存这些值?或者创建一个类并让这个函数在其中,然后分配实例?(在这个问题之前,我被要求建立一个学生类的名字,年龄,和专业内)

class Student:
name = "Unknown name"
age = 0
major = "Unknown major"
562474 次浏览

创建一个类并给它一个 __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

虽然我不知道为什么你需要一个 make_student学生函数,如果它做同样的事情作为 Student.__init__

class Student(object):
name = ""
age = 0
major = ""


# The class "constructor" - It's actually an initializer
def __init__(self, name, age, major):
self.name = name
self.age = age
self.major = major


def make_student(name, age, major):
student = Student(name, age, major)
return student

请注意,尽管 Python 哲学中的原则之一是 “应该有一种ーー最好只有一种ーー显而易见的方法来做到这一点”,但仍然有多种方法可以做到这一点。您还可以使用以下两个代码片段来利用 Python 的动态功能:

class Student(object):
name = ""
age = 0
major = ""


def make_student(name, age, major):
student = Student()
student.name = name
student.age = age
student.major = major
# Note: I didn't need to create a variable in the class definition before doing this.
student.gpa = float(4.0)
return student

我更喜欢前者,但是在一些情况下后者可能很有用——一种是在使用 MongoDB 这样的文档数据库时。

对象是类的实例,类只是对象的蓝图

# 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})()

使用预定义类创建对象时,首先要创建一个用于存储该对象的变量。然后您可以创建对象并存储您创建的变量。

class Student:
def __init__(self):


# creating an object....


student1=Student()

实际上,这个 Init方法是 class.you 可以使用一些属性初始化该方法的构造函数。.在这一点上,当您创建一个对象时,您必须为特定的属性传递一些值。.

class Student:
def __init__(self,name,age):
self.name=value
self.age=value


# creating an object.......


student2=Student("smith",25)