我对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'
答案 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。
轻松访问它们我想这就是你想要的?希望这有帮助。