79_类方法

83.类方法

staticmethod 官方文档

classmethod 官方文档

类方法是从属于“类对象”的方法。类方法通过装饰器@classmethod来定义,格式如下:

@classmethod 
def 类方法名(cls [,形参列表]) : 
    函数体
    # 可以理解为 无需实例化对象。就可以直接通过 类名.方法名() 来访问的方法 

要点如下:

  1. @classmethod必须位于方法上面一行
  2. 第一个cls 必须有;cls指的就是“类对象”本身;(和self指的是实例对象本身有异曲同工之处)
  3. 调用类方法格式:“类名.类方法名(参数列表)”。 参数列表中,不需要也不能给 cls 传 值。
  4. 类方法中访问实例属性实例方法会导致错误
  5. 子类继承父类方法时,传入cls 是子类对象,而非父类对象
    【操作】类方法使用测试
# 类方法   从属于   类(模具)的  方法

class Student02:
    company = '海贼王'  # 类属性
    @classmethod  # 建立 实例对象之后  类(模具) 方法不会建立在 实例对象里面
    def printCompany(cls):
        print(cls.company)
        
Student02.printCompany()

静态方法

Python中允许定义与“类对象”无关的方法,称为“静态方法”。

静态方法”和在模块中定义普通函数没有区别,只不过“静态方法”放到了“类的名字空 间里面”,需要通过“类调用”。

静态方法通过装饰器@staticmethod来定义,
格式如下:

@staticmethod 
def 静态方法名([形参列表]) : 
    函数体 

要点如下:

  1. @staticmethod必须位于方法上面一行
  2. 调用静态方法格式:“类名.静态方法名(参数列表)”。
  3. 静态方法中访问实例属性实例方法导致错误

【操作】静态方法使用测试

class Student03:
    company = '海贼王'  # 类属性

    def __init__(self, name, age):
        self.name = name
        self.age = age

    @staticmethod
    def add(a, b):  # 静态方法
        print(Student03.company)  # 静态方法  里面 也可以调用  类属性
        print('{0}+{1}={2}'.format(a, b, (a + b)))
        return a + b   # 类方法 和 静态方法中,不能调用 实例变量和实例方法
        # 模具里 想吃饼干(实例对象和方法),不可以, 也就是 无法传递 self


Student03.add(20, 30)

区别

这两个方法的用法是类似的,在上面的例子中大多数情况下,classmethod也可以通过staticmethod代替,在通过类调用时,这两者对于调用者来说是不可区分的。


这两者的区别在于,classmethod 增加了一个对实际调用类引用,这带来了很多方便的地方:

  • 方法可以判断出自己是通过基类被调用,还是通过某个子类被调用
  • 通过子类调用时,方法可以返回子类的实例而非基类的实例
  • 通过子类调用时,方法可以调用子类的其他classmethod
  • 一般来说classmethod可以完全替代staticmethod

staticmethod唯一的好处是调用时它返回的是一个真正的函数,而且每次调用时返回同一个实例classmethod则会对基类子类返回不同的bound method实例),但这点几乎从来没有什么时候是有用的。

不过,staticmethod可以在子类上被重写为classmethod,反之亦然 。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中JTable方法有很多,以下是一些常用的方法: 1. JTable():创建一个默认JTable对象。 2. JTable(int numRows, int numColumns):创建一个指定行数和列数的JTable对象。 3. JTable(Object[][] rowData, Object[] columnNames):创建一个指定行数据和列名的JTable对象。 4. getRowCount():返回JTable中的行数。 5. getColumnCount():返回JTable中的列数。 6. getColumnName(int column):返回指定列的名称。 7. getValueAt(int row, int column):返回指定单元格的值。 8. setValueAt(Object value, int row, int column):设置指定单元格的值。 9. isCellEditable(int row, int column):返回指定单元格是否可编辑。 10. addMouseListener(MouseListener listener):添加鼠标监听器。 11. getColumnModel():返回列模型。 12. getSelectionModel():返回选择模型。 13. getModel():返回表格模型。 14. setModel(TableModel dataModel):设置表格模型。 15. setSelectionMode(int selectionMode):设置选择模式。 16. setAutoResizeMode(int mode):设置表格自动调整列宽的方式。 17. setRowSelectionAllowed(boolean flag):设置是否允许选择行。 18. setColumnSelectionAllowed(boolean flag):设置是否允许选择列。 19. setPreferredScrollableViewportSize(Dimension size):设置首选的滚动视图口大小。 20. setRowHeight(int rowHeight):设置所有行的高度。 21. setColumnWidth(int column, int width):设置指定列的宽度。 22. setTableHeader(JTableHeader tableHeader):设置表格头部。 23. setCellSelectionEnabled(boolean flag):设置是否启用单元格选择。 24. setColumnSelectionInterval(int index0, int index1):设置列选择间隔。 25. setRowSelectionInterval(int index0, int index1):设置行选择间隔。 26. getColumnClass(int columnIndex):返回指定列的。 27. getSelectedRow():返回选定行的索引。 28. getSelectedColumn():返回选定列的索引。 29. getSelectedRows():返回选定行的索引数组。 30. getSelectedColumns():返回选定列的索引数组。 31. getCellEditor(int row, int column):返回指定单元格的编辑器。 32. setCellEditor(TableCellEditor editor):设置单元格编辑器。 33. addColumn(TableColumn column):添加一个列。 34. removeColumn(TableColumn column):删除一个列。 35. createDefaultColumnsFromModel():从模型中创建默认列。 36. setColumnWidths(int[] widths):设置列宽。 37. setColumnOrder(int[] order):设置列顺序。 38. setRowSorter(RowSorter<? extends TableModel> sorter):设置行排序器。 39. addRowSelectionInterval(int index0, int index1):添加行选择间隔。 40. removeRowSelectionInterval(int index0, int index1):移除行选择间隔。 41. addColumnSelectionInterval(int index0, int index1):添加列选择间隔。 42. removeColumnSelectionInterval(int index0, int index1):移除列选择间隔。 43. setDefaultRenderer(Class<?> columnClass, TableCellRenderer renderer):设置指定列的默认渲染器。 44. setDefaultEditor(Class<?> columnClass, TableCellEditor editor):设置指定列的默认编辑器。 45. getColumn(int columnIndex):返回指定列的TableColumn对象。 46. setColumnMargin(int margin):设置列边距。 47. setRowMargin(int margin):设置行边距。 48. setIntercellSpacing(Dimension spacing):设置单元格间距。 49. setPreferredScrollableViewportSize(Dimension size):设置首选的滚动视图口大小。 50. setBackground(Color bg):设置背景颜色。 51. setForeground(Color fg):设置前景颜色。 52. setFont(Font font):设置字体。 53. setOpaque(boolean isOpaque):设置是否不透明。 54. setAutoCreateColumnsFromModel(boolean flag):设置是否从模型中自动创建列。 55. setAutoResizeMode(int mode):设置表格自动调整列宽的方式。 56. setSelectionMode(int selectionMode):设置选择模式。 57. setRowSelectionAllowed(boolean flag):设置是否允许选择行。 58. setColumnSelectionAllowed(boolean flag):设置是否允许选择列。 59. setEditingColumn(int column):设置正在编辑的列。 60. setEditingRow(int row):设置正在编辑的行。 61. setValueIsAdjusting(boolean flag):设置是否值正在调整。 62. getCellRect(int row, int column, boolean includeSpacing):返回指定单元格的矩形。 63. getCellRenderer(int row, int column):返回指定单元格的渲染器。 64. setCellRenderer(TableCellRenderer renderer):设置单元格渲染器。 65. prepareEditor(TableCellEditor editor, int row, int column):准备单元格编辑器。 66. removeEditor():移除编辑器。 67. getEditorComponent():返回正在编辑的组件。 68. getSelectedRows():返回选择的行。 69. getSelectedColumns():返回选择的列。 70. clearSelection():清除选择。 71. changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend):改变选择。 72. editCellAt(int row, int column, EventObject e):编辑指定单元格。 73. removeEditor():移除编辑器。 74. isEditing():返回是否正在编辑。 75. getEditingColumn():返回正在编辑的列。 76. getEditingRow():返回正在编辑的行。 77. getSelectedRowCount():返回选择的行数。 78. getSelectedColumnCount():返回选择的列数。 79. isCellSelected(int row, int column):返回指定单元格是否被选择。 80. setPreferredScrollableViewportSize(Dimension size):设置首选的滚动视图口大小。 81. getPreferredSize():返回首选大小。 82. getMinimumSize():返回最小大小。 83. getMaximumSize():返回最大大小。 84. getScrollableTracksViewportWidth():返回是否跟踪视口宽度。 85. getScrollableTracksViewportHeight():返回是否跟踪视口高度。 86. print():打印表格。 87. print(JTable.PrintMode mode, MessageFormat headerFormat, MessageFormat footerFormat):根据指定的打印模式打印表格。 88. scrollRectToVisible(Rectangle aRect):滚动到可见的矩形。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值