gpt4 book ai didi

Python 抽象 setter 和 getter

转载 作者:行者123 更新时间:2023-12-03 17:31:23 25 4
gpt4 key购买 nike

我想编写抽象类,强制继承类在我的抽象类中实现所有方法和属性。

另外,我想对我的抽象属性使用 setter 和 getter,以使我的代码整洁并看起来很好

但是,当前的实现:

import abc


class Component(metaclass=abc.ABCMeta):

@property
@abc.abstractmethod
def status(self):
pass

@property
@status.setter
@abc.abstractmethod
def status(self, value):
pass

确实强制继承类为我的抽象属性 getter 实现 getter,但不强制创建属性 setter (这正是我想要的)

我怎样才能在不失去应用进一步提到的方法的所有好处的情况下实现这种行为(也就是编写新方法并在我的抽象类 setter 中执行它们)?

最佳答案

从 abc 导入 ABCMeta,抽象方法
类基础(对象):
元类 = ABC元

def __init__(self, val):
self._foo = val

@abstractmethod
def _doStuff(self, signals):
print ('Base does stuff')

@abstractmethod
def _get_foo(self):
return self._foo

@abstractmethod
def _set_foo(self, val):
self._foo = val + 'r'

foo = property(_get_foo, _set_foo)
类(class) floor_1(基础):
元类 = ABC元
def __init__(self, val):
self._foo = val
super(floor_1, self).__init__(val)

def _doStuff(self, signals):
print ('floor_1 does stuff')

def _get_foo(self):
return self._foo

def _set_foo(self, val):
#self._foo = val + 'r'
super()._set_foo(val + 'r')

foo = property(_get_foo, _set_foo)
类(class) floor_2(floor_1):
@property
def foo(self):
return self._foo

@foo.setter
def foo(self, val):
self._foo = val + 'r'
#super()._set_foo(val + 'r')
b1 = floor_1('bar')
b1 = floor_2('bar')
打印(b1.foo)
b1.foo = 'bar'
打印(b1.foo)

关于Python 抽象 setter 和 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53529828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com