python面向对象:类方法
2024-10-20 09:32:27
类的方法包括以下几种:
- 构造方法 :__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 参数,可以把它看成是一个普通的函数;
我们可以把它写到类外面,但这是不推荐的,因为这不利于代码的组织和命名空间的整洁。
最新文章
- HotSpot 自动内存管理笔记与实战
- 继续node爬虫 — 百行代码自制自动AC机器人日解千题攻占HDOJ
- linux初级,连网
- mac liteIDE调试配置
- COJ983 WZJ的数据结构(负十七)
- MyEclipse背景色不伤眼+字体大小调节+代码格式化不换行
- websphere变成英文了
- 【39】明智而审慎第使用private继承
- H TML5 之 (4) 小项目一 时钟
- [转载]转载一篇好文章作为Java与面向对象之随感(3)
- Hibernate启动非常慢问题分析
- 设计模式的征途—3.抽象工厂(Abstract Factory)模式
- Web开发中常用的状态码
- storm中的Scheduler
- ActiveX、OLE和COM的关系(转自百度文档)
- springboot项目从硬盘指定位置读取文件(获取静态资源)
- 在DevExpress程序中使用PopupContainerEdit和PopupContainer实现数据展示
- 数独_erlang解题代码
- ---转载---phython资料
- 《快学 Go 语言》第 16 课 —— 包管理 GOPATH 和 Vendor