【发布时间】:2015-12-26 20:32:10
【问题描述】:
所以我目前正在学习 python,我想知道是否有办法让一个类成为其他人的超类,而不允许直接从它创建对象。我尝试删除构造函数方法,但这并没有停止实例化,它只会使对象变为空白,我也尝试过引发错误,但这会终止程序,我不想这样做,从技术上讲,它不会阻止实例化它只是通过终止程序使对象无法访问。即:
class MySuperClass():
def __init__(self):
raise Exception("Cannot create object directly from base class")
我也尝试过尝试然后在其中引发异常
try:
class MySuperClass():
def __init__(self):
raise ValueError
except:
print("Cannot create object directly from base class")
这仍然没有停止对象的创建,我也尝试将这一行放在构造函数del self 中,但它似乎没有任何效果。有任何想法吗?提前致谢。
【问题讨论】:
-
你到底想做什么?一个文档字符串“在实例化这个类之前三思而后行”怎么样?毕竟是 Python。
-
如果您试图要求子类实现一个方法,请使用
abc模块 -
你想让它做什么而不是停止程序?如果有人做了
x = MySuperClass()然后尝试用x做某事(比如调用其他方法),你想发生什么? -
而不是创建它打印他们不应该并继续运行程序的其余部分
-
@MarwanSabry:不过,你不能那样做。如果“程序的其余部分”依赖于现有的
x,则您无法运行程序的其余部分。一般来说,你不能直接跳到后面的操作而不完成前面的操作,因为当人们创建一个对象时,他们希望能够使用它,所以程序稍后会在事实证明他们不能使用时失败。跨度>
标签: python class oop python-3.x object