类的方法包括以下几种:

  • 构造方法 :__init__(self,)
  • 析构方法 :__del__(self)
  • 类方法@classmethod、实例方法、静态方法@staticmethod

一、构造方法

__init__(self , ...)   即使用self参数, 并把参数(argument)传递至self.val(泛指)的成员变量中。

class grade(object):
def __init__(self,name,score):
self.name = name
self.score = score kk = grade('kumata',61)
print(kk.name)
print(kk.score) #输出
kumata
61

二、析构方法

__del__(self)   在对象消逝的时候被调用,当对象不再被使用时,__del__()方法运行。

class grade(object):
def __init__(self):
print('score = 60!') def __del__(self):
print('del !!') def my_score(self):
print('i have 100 !!') >>>oo = grade()
score = 60! >>>oo.my_score()
i have 100 !! >>>def oo
del !!

三、

1)类方法     引入装饰器@classmethod:通过类来调用方法,而不是通过实例。

class A(object):

    bar = 1

    @classmethod
def class_foo(cls):
print ('Hello, kumata', cls)
print (cls.bar) print(A.class_foo())
a = A() #实例的方法调用也ok
print(a.class_foo()) #输出
Hello, kumata <class '__main__.A'>
1 Hello, kumata <class '__main__.A'>
1

2)实例的方法     通过实例来调用方法,而不是通过类。

class A(object):

    bar = 1

    def class_foo(cls):
print ('Hello, kumata', cls)
print (cls.bar) a = A() #实例的方法调用也ok
print(a.class_foo()) #输出
Hello, kumata <__main__.A object at 0x000001A9F4EADA58>
1 print(A.class_foo()) #没有@classmrthod的时候调用类方法会报错 TypeError: class_foo() missing 1 required positional argument: 'cls'

3)静态方法@staticmethod:

类中往往有一些方法跟类有关系,但是又不会改变类和实例状态的方法,这种方法是静态方法,使用 staticmethod 来装饰。

class A(object):

    @staticmethod
def static_foo():
print ('Hello, kumata', A.bar) >>> a = A()
>>> a.static_foo()
Hello,kumata 1
>>> A.static_foo()
Hello,kumata 1

可以看到静态方法没有 self 和 cls 参数,可以把它看成是一个普通的函数;

我们可以把它写到类外面,但这是不推荐的,因为这不利于代码的组织和命名空间的整洁。

最新文章

  1. HotSpot 自动内存管理笔记与实战
  2. 继续node爬虫 — 百行代码自制自动AC机器人日解千题攻占HDOJ
  3. linux初级,连网
  4. mac liteIDE调试配置
  5. COJ983 WZJ的数据结构(负十七)
  6. MyEclipse背景色不伤眼+字体大小调节+代码格式化不换行
  7. websphere变成英文了
  8. 【39】明智而审慎第使用private继承
  9. H TML5 之 (4) 小项目一 时钟
  10. [转载]转载一篇好文章作为Java与面向对象之随感(3)
  11. Hibernate启动非常慢问题分析
  12. 设计模式的征途—3.抽象工厂(Abstract Factory)模式
  13. Web开发中常用的状态码
  14. storm中的Scheduler
  15. ActiveX、OLE和COM的关系(转自百度文档)
  16. springboot项目从硬盘指定位置读取文件(获取静态资源)
  17. 在DevExpress程序中使用PopupContainerEdit和PopupContainer实现数据展示
  18. 数独_erlang解题代码
  19. ---转载---phython资料
  20. 《快学 Go 语言》第 16 课 —— 包管理 GOPATH 和 Vendor

热门文章

  1. Socket网络编程--简单Web服务器(2)
  2. 【Spark 深入学习-08】说说Spark分区原理及优化方法
  3. vue中单选框,利用不存在的值标示选中状态
  4. 【转】Django中使用POST方法获取POST数据
  5. MySql-Binlog协议详解
  6. Android 实现顶层窗口、浮动窗口(附Demo)
  7. Paypal Rest Api自定义物流地址(跳过填写物流地址)
  8. Extjs4 DateTimeField,日期时间控件完美版
  9. SQL group BY 合并字段用逗号隔开
  10. Top useful .Net extension methods