我基本上陷入了对象属性继承和扩展基类方法的双重问题。你知道吗
我正在重构我的代码,以遵循枯燥的规则,并讨论最佳的设计解决方案。你知道吗
有没有一种简洁而优雅的方法使对象从基类继承属性并扩展其现有方法
不映射对象B中对象A的所有属性 *没有一堆装饰和财产?*
似乎不允许访问基类对象的属性
示例:
class A():
def __init__(self):
self.x = "whatever"
self.y= "cumbersome"
self.z = "idea"
def method1(self):
self.x = self.x.lower()
class B(A):
def __init__(self):
self.a = 87
@method1
def method1extended(self):
self.y =self.y.upper()
b=b() b、 y没有设置,所以我想我们应该使用setter和getter装饰器
method1不容易扩展,也不允许访问由method1extended转换的self.x或self.y,它总是指出self.y的初始值
即使尝试使用super(),也需要重写整个函数
有一个优雅的解决方案吗?你知道吗
请使用以下代码进行尝试。你知道吗
我们改变了很多事情:
object
添加了A
子类来获得一个新样式的类。(请注意,这仅适用于python版本2)A.__init__
中添加了对object.__init__
的调用。Python不会隐式地为您调用这些,您必须自己调用。你知道吗B.__init__
现在调用A.__init__
。这同样需要你来做。你知道吗B.method1extended
重命名为B.method1
,这样它就隐藏了A.method1
。你知道吗B.method1
在应用自己的更改之前调用A.method1
。你知道吗相关问题 更多 >
编程相关推荐