【问题标题】:How to Set the instance Variables after initialising a class in python?在python中初始化一个类后如何设置实例变量?
【发布时间】:2026-01-30 19:40:01
【问题描述】:

构造函数:

def  __init__(self,name,height,race):
    self.name = name
    self.height = height
    self.race = race



n = Student("John")
n.set_height(190)
n.set_race("Black")

当我这样做时,我收到一个错误,提示 Student.init() 缺少 2 个必需的位置参数:'height' 和 'race'

【问题讨论】:

  • __init__ 方法设置默认参数或删除不需要的参数?如果可以在没有这些参数的情况下初始化实例,为什么您的初始化程序需要它们?

标签: python python-3.x oop


【解决方案1】:

如果您在constructor(__init__()) 函数中询问 3 个参数,则必须全部提供 3 个。
所以你可以使用:n = Student("Jhon", 190, "Black")

或者

def  __init__(self,name):
    self.name = name

def set_height(height):
    self.height = height

def set_race(race):
    self.race = race



n = Student("John")
n.set_height(190)
n.set_race("Black")

这里您只在构造函数中设置名称,然后使用set 函数设置其他值。

这些方法必须在class 中定义,它们将用于初始化属性heightrace。如果您不调用这些方法,您的对象将没有它们的值。

您定义构造函数的方式也有效,但您必须在() 之间传递您要求的所有值。这些值用于初始化属性

【讨论】:

  • 我在类中定义了setter
  • 是的,但您还在constructor 定义中要求3 参数。你也可以在类中定义setters,在cconstructor中定义参数,但是当你调用构造函数时,你必须传递你在声明中要求的所有参数
  • 有两种方法可以让它工作。 1. 你从__init__ 中删除heightrace2. 你保留它们,但你像这样初始化类:n = Student("Jhon", 190, "Black")。然后您可以使用setters 更改值,但您必须使用这些参数