创建一个不可实例化的类

时间:2018-02-05 15:05:17

标签: python abstract-class python-3.6

简单的问题。什么是使类无法实例化的最pythonic方法。

我知道这可以通过覆盖新的__new__并在那里引发异常来完成。还有更好的方法吗?

我有点在抽象的班级方向。但是,我 NOT 将此类用作基类到任何其他类。并且 NOT 会在课程中定义抽象方法

没有这些,抽象类在实例化时不会引发任何异常。

我看过这个答案。这不是我想要的。 Is it possible to make abstract classes in Python?

编辑:

我知道这可能不是最好的方法,但这是我解决我需要的东西的方式。我认为这是一个简单的问题,可以有一个肯定+解释或没有答案。答案/评论基本上相当于,你不应该问这个问题没什么意义。

1 个答案:

答案 0 :(得分:0)

您之后能够只调用math.sin(x)之类的东西吗?

你把它变成一个静态的方法。你只是不做任何实例。

Private Sub Test() 

    Try
        For i = 0 To SomeIndex            

            Dim excel As Excel.Application = New Excel.Application
            Dim workbook As Excel.Workbook = excel.Application.Workbooks.Add(True)
            Dim worksheet As Excel.Worksheet = DirectCast(workbook.Worksheets("Feuil1"), Excel.Worksheet)

            '
            'Some Excel stuff here 
            '

            'Left the following lines here, maybe it is related to the range ?

            excel.Cells.EntireColumn.AutoFit()
            worksheet.Range("A3:G3").Select()
            excel.Selection.AutoFilter()
            worksheet.Range("A1").Select()


            workbook.SaveCopyAs(NomPJ)
            excel.Cells.ClearContents()

            workbook.Close(False)
            excel.Quit()

            CloseExcel(worksheet)
            CloseExcel(workbook)
            CloseExcel(excel)

        Next

    Catch ex As Exception
        MessageBox.Show(ex.ToString())           
    End Try

End Sub

如果你在想为什么你实际上不能做=数学() 因为数学,不是一个阶级。它是一个单独的脚本,其中包含所有这些功能。

所以你可能想要制作一个包含所有静态内容的单独脚本。 ;)

如果你想要在同一个脚本中的所有内容,那么它只是局部变量。如果你像我一样,你宁愿用课程组织得恰到好处,看起来你可能最好只做一个正常的课程,并只创建一个实例