【发布时间】:2023-01-23 05:51:25
【问题描述】:
我正在尝试在 python 中构建一个类,其中变量赋值和检索需要通过另一个类及其 set_value 和 get_value 的逻辑来完成。
我的对象类给出了 set_value 和 get_value 的逻辑
Class MyObj:
def __init__(self):
self.value = 0
def set_value(self, value):
self.value = value
def get_value(self):
return self.value
用户创建一个我的课对象并设置/获取这些变量的值,但是我的对象类将从用户那里 100% 抽象出来。
class MyClass:
item1 = MyObj()
item2 = MyObj()
item3 = MyObj()
def __setattr__(self, key, value):
print(f"set logic :: {key}, {value}")
# key.set_value(value)
def __getattribute__(self, item):
print(f"get logic :: {item}")
# return item.get_value()
我的课将表现得像任何其他 python 类,但 setter 和 getter 逻辑来自我的对象.
cls = MyClass()
cls.item1 = 10 # Issue: this should not replace variable value from class object.
print(cls.item1) # Issue: this should not return class object
问题:
- 目前,这将通过
__setattr__和__getattribute__方法完成,但我无法使代码正常工作,因为参数在字符串中。 - 我不想为中的每个变量手动键入 getter 和 setter我的课.
- 用户应该能够读取和写入变量我的课像标准的 python 类变量。
- https://github.com/ramazanpolat/prodict 这个库做了类似的事情,但不是我要找的。
【问题讨论】:
-
看起来你在描述Descriptors,但你使用的是不同的方法。不清楚(对我而言)您是否需要描述符所做的其他事情。
标签: python python-3.x