日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python construct 字符串_通过字符串变量在Python中设置和获取@property方法

發布時間:2025/4/5 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python construct 字符串_通过字符串变量在Python中设置和获取@property方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目前我有一個通用函數,你可以傳入一個屬性名和一個類(它也適用于特定的對象實例,但我正在使用類),該函數將通過調用查找并操作該屬性

getattr(model_class, model_attribute)

它將通過調用(此時在對象實例上)來修改屬性

settattr(model_obj,key,value)

但是,我有一個類,我們定義了@property方法而不是簡單屬性,并且setattr不起作用.如何基于該屬性方法的字符串名稱動態獲取@property?

也許我可以使用__dict__,但這看起來很臟而且不那么安全.

編輯:示例代碼

廣義函數

def process_general(mapping, map_keys, model_class, filter_fn, op_mode=op_modes.UPDATE):

"""

Creates or updates a general table object based on a config dictionary.

`mapping`: a configuration dictionary, specifying info about the table row value

`map_keys`: keys in the mapping that we use for the ORM object

`model_class`: the ORM model class we use the config data in

`op_mode`: the kind of operation we want to perform (delete, update, add, etc.)

Note that relationships between model objects must be defined and connected

outside of this function.

"""

# We construct a dictionary containing the values we need to set

arg_dict = make_keyword_args(map_keys, mapping)

# if we are updating, then we must first check if the item exists

# already

if (op_mode == op_modes.UPDATE):

# Find all rows that match by the unique token.

# It should only be one, but we will process all of them if it is the

# case that we didn't stick to the uniqueness requirement.

matches = filter_fn()

# Keep track of the length of the iterator so we know if we need to add

# a new row

num_results = 0

for match in matches:

# and we set all of the object attributes based on the dictionary

set_attrs_from_dict(match, arg_dict)

model_obj = match

num_results += 1

# We have found no matches, so just add a new row

if (num_results < 1):

model_obj = model_class(**arg_dict)

return model_obj

# TODO add support for other modes. This here defaults to add

else:

return model_class(**arg_dict)

傳入的示例類:

class Dataset(db.Model, UserContribMixin):

# A list of filters for the dataset. It can be built into the dataset filter form dict

# in get_filter_form. It's also useful for searching.

filters = db.relationship('DatasetFilter', backref='dataset')

# private, and retrieved from the @property = select

_fact_select = db.relationship('DatasetFactSelect', order_by='DatasetFactSelect.order')

@property

def fact_select(self):

"""

FIXME: What is this used for?

Appears to be a list of strings used to select (something) from the

fact model in the star dataset interface.

:return: List of strings used to select from the fact model

:rtype: list

"""

# these should be in proper order from the relationship order_by clause

sels = [sel.fact_select for sel in self._fact_select]

return sels

總結

以上是生活随笔為你收集整理的python construct 字符串_通过字符串变量在Python中设置和获取@property方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。