python描述符与实例属性_python – 使用类实例作为类属性,描述符和属性

我最近曾说过尝试在

Python中使用更新的类(从对象派生的类).作为熟悉它们的例外,我试图定义一个具有许多类实例作为属性的类,每个类实例描述不同类型的数据,例如: 1d列表,2d数组,标量等.基本上我希望能够写

some_class.data_type.some_variable

其中data_type是描述变量集合的类实例.下面是我第一次尝试实现这一点,只使用profiles_1d实例而非通用名称:

class profiles_1d(object):

def __init__(self, x, y1=None, y2=None, y3=None):

self.x = x

self.y1 = y1

self.y2 = y2

self.y3 = y3

class collection(object):

def __init__(self):

self._profiles_1d = None

def get_profiles(self):

return self._profiles_1d

def set_profiles(self, x, *args, **kwargs):

self._profiles_1d = profiles_1d(x, *args, **kwargs)

def del_profiles(self):

self._profiles_1d = None

profiles1d = property(fget=get_profiles, fset=set_profiles, fdel=del_profiles,

doc="One dimensional profiles")

以上代码大致是解决此问题的适当方法.我见过的使用属性的例子只是设置了一些变量的值.在这里,我需要我的set方法来初始化某个类的实例.如果没有,将非常感谢任何其他更好的实现方法的建议.

另外,我定义set方法的方式是否正确?通常,根据我的理解,set方法定义了用户键入时要执行的操作,在此示例中,

collection.profiles1d = ...

我可以使用上面的代码正确设置profiles_1d实例的属性的唯一方法是键入collection.set_profiles([…],y1 = […],…),但我认为我不应该’直接调用此方法.理想情况下,我想输入collection.profiles =([…],y1 = […],…):这是正确/可能吗?

最后,我看到一个装饰器提到了很多类型的新风格,但这是我所知道的很少.在这里使用装饰器是否合适?这是我应该更多地了解这个问题吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值