尝试检索类属性时出错。

时间:2018-04-25 21:23:35

标签: python

我对Python比较陌生,试图通过重写它并试图在jupyter上运行来理解我遇到的函数。该函数的目的是分析调用类,检索与其关联的属性,并创建将成为稍后将针对数据库运行的查询的一部分的字符串。 我创建了非常简单的类并为其添加了一些属性/属性,但是我收到一个错误,我不知道如何解决它:

class Person(object):

def __init__(self):
    pass
class Employee(Person):

    __required_properties__ = ['first_name', 'last_name']

def __init__(self):
    super().__init__()

def inherited_labels(cls):
    return ['employee']

def build_merge_query(cls, merge_params, update_existing=False, lazy=False, relationship=None):
    query_params = dict(merge_params=merge_params)
    print (query_params)
    n_merge = "n:{} {{{}}}".format(
        ":".join(cls.inherited_labels()),
        ", ".join("{0}: params.create.{0}".format(getattr(cls, p).db_property or p) 
              for p in cls.__required_properties__))
return n_merge

merge_params = ('first_name', 'last_name')

myEmployee = Employee()

build_merge_query(myEmployee, merge_params)

当我运行这个时,我得到一个“属性错误:'员工'对象没有属性'first_name'

<ipython-input-78-2973503b3f7a> in <genexpr>(.0)
 21         ":".join(cls.inherited_labels()),
 22         ", ".join("{0}: params.create.{0}".format(getattr(cls, p).db_property or p) 
---> 23                   for p in cls.__required_properties__))
 24     return n_merge
 25 AttributeError: 'Employee' object has no attribute 'first_name'

1 个答案:

答案 0 :(得分:1)

我不确定你想做什么,但这是我的建议。 初始化类时,在 init 类中,可以向类添加属性。 以下是Person类的示例。

class Person(first_name, last_name):
    def __init__(self, first_name, last_name):
       self.first_name = first_name
       self.last_name = last_name

通过这样做,您的Person类具有first_name和last_name属性。您可以通过调用myPerson.first_name,myPerson.last_name。

轻松访问它们

我想这就是你想要的?希望这有帮助。