gpt4 book ai didi

python - 使用键(字符串)作为方法的参数

转载 作者:行者123 更新时间:2023-12-01 05:15:28 24 4
gpt4 key购买 nike

我正在尝试理解 Python 中的方法。我的程序中有两个类。

class Department(ndb.Model):
dept_name=ndb.StringProperty(required=True)
employees=ndb.KeyProperty(repeated=True)

class Employee(ndb.Model):
employee_name=ndb.StringProperty(required=True)
salary=ndb.IntegerProperty()

我在Department类中有这个方法

def addEmployee(employee):
dept = Department.get_or_insert("Finance")
dept.employees.append.(employee.key)
dept.put()

我从 RequestHandler 调用它,如下所示:

    employee = Employee.get_by_id("David Moyes")
dept = Department.get_or_insert("Finance")
dept.addEmployee(employee)

我正在尝试将 David Moyes 添加到 Finance 部门。使用他的名字,这也是 David Moyes 实体的关键Employee 数据存储。问题是,没有任何反应,也没有显示错误消息。我怀疑问题出在线路上

def addEmployee(员工):

当我声明这一点时,员工是什么类型?我不应该传递一个字符串吗?既然键是一个字符串

最佳答案

实例方法的第一个参数是当前对象的句柄,应该称为selfThis is standard python oo programming .

此外,在 addEmployee 方法中加载部门是没有意义的 - 它是硬编码来加载“Finance”的 - 如果您想向销售部门添加员工怎么办?

我认为您的 Department 类应该看起来更像这样:

class Department(ndb.Model):
dept_name = ndb.StringProperty(required=True)
employees = ndb.KeyProperty(kind=Employee, repeated=True)

def addEmployee(self, employee):
self.employees.append(employee.key)
self.put()

注意,我还向员工 KeyProperty 添加了 kind=Employee,这将验证您是否仅将 Employee 类型的键添加到列表。

关于python - 使用键(字符串)作为方法的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23308966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com