【发布时间】:2011-06-09 22:12:47
【问题描述】:
我不确定我的方法是不是好的设计,我希望我能得到一个小费。我正在考虑抽象方法的某个地方,但在这种情况下,我希望该方法是可选的。我现在就是这样做的……
from pymel.core import *
class A(object):
def __init__(self, *args, **kwargs):
if callable(self.createDrivers):
self._drivers = self.createDrivers(*args, **kwargs)
select(self._drivers)
class B(A):
def createDrivers(self, *args, **kwargs):
c1 = circle(sweep=270)[0]
c2 = circle(sweep=180)[0]
return c1, c2
b = B()
在上面的示例中,我只是在 PyMEL 中为 Maya 创建了 2 个圆弧,但我完全打算创建更多可能有也可能没有 createDrivers 方法的子类!所以我希望它是可选的,我想知道我的方法是否——好吧,我的方法是否可以改进?
【问题讨论】:
-
抱歉,没有足够的信息来评论设计。从这个例子中我看不出有任何理由使用 A 以及为什么 B 是 A。现在的形式我认为你想太多了 ;)
-
PEP 8 -- Python 代码风格指南:python.org/dev/peps/pep-0008
-
感谢@Pawel Prażak,但我只是想将我的代码压缩成人们实际阅读的内容。我这样做肯定是有原因的。我的
A类实际上是RigControl,子类就像CircleControl或CrossControl等。我要制作许多形状,我想继承RigControl的所有功能。 -
@delnan,继续前进,我一定会优先考虑这一点。感谢您的提示。
标签: python subclass optional abstract-methods pymel