python面向对象:类方法
类的方法包括以下几种:
- 构造方法 :__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 参数,可以把它看成是一个普通的函数;
我们可以把它写到类外面,但这是不推荐的,因为这不利于代码的组织和命名空间的整洁。
python面向对象:类方法的更多相关文章
- python 面向对象 类方法,静态方法,property
property 内置装饰器函数 只在面向对象使用 把方法当初属性使用(方法不加参数) 例子: class Rectangle: def __init__(self,long,wide,color): ...
- Python面向对象 | 类方法 classmethod
类方法:必须通过类的调用,而且此方法的意义:就是对类里面的变量或者方法进行修改添加. 例一个商店,店庆全场八折,代码怎么写呢? class Goods: __discount = 0.8 # 折扣 ...
- Python面向对象静态方法,类方法,属性方法
Python面向对象静态方法,类方法,属性方法 属性: 公有属性 (属于类,每个类一份) 普通属性 (属于对象,每个对象一份) 私有属性 (属于对象,跟普通属性相似,只是不能通过对象直接访问) 方法: ...
- Python面向对象 --- 新旧式类、私有方法、类属性和类方法、静态方法
一.Python面向对象中的新旧式类 1)新式类(推荐使用):在定义类时,类后边括号里要继承基类(object).在python3.x中若没有指定父类,会默认使用的是object作为基类:在pytho ...
- Python面向对象05 /私有成员、类方法、静态方法、属性、isinstance/issubclass
Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubclass 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/is ...
- python 面向对象专题(五):私有成员、类方法、静态方法、属性、isinstance/issubclass
https://www.cnblogs.com/liubing8/p/11325421.html 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubc ...
- python面向对象进阶(八)
上一篇<Python 面向对象初级(七)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...
- python 面向对象(进阶篇)
上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...
- python 面向对象和类成员和异常处理
python 面向对象 你把自己想象成一个上帝,你要创造一个星球,首先你要把它揉成一个个球,两个直径就能创造一个球 class star: '''名字(name),赤道直径(equatorial di ...
- python 面向对象学习
------Python面向对象初 下面写一个类的简单实用,以便方便理解类 #python 3.5环境,解释器在linux需要改变 #阅读手册查询readme文件 #作者:S12-陈金彭 class ...
随机推荐
- 【Java】浅谈Java IO
注意 本文的代码,为了学习方便,简化代码复杂度,未考虑拆包.粘包等情况的处理.所以仅供学习使用,不能用于实际环境. 阻塞IO,BIO Java1.1发布的IO是BIO.阻塞地连接之后,通过流进行同步阻 ...
- 【Android】Android开源项目精选(一)
ListView ListView下拉刷新:https://github.com/johannilsson/android-pulltorefresh AndroidPullToRefresh:htt ...
- 【XMPP】Smack源码之初步认识
Smack 概述 Smack是一个用于和XMPP服务器通信的类库,由此可以实现即时通讯和聊天. Smack主要优势 非常简单易用,并且有十分强大的 API.只需三行代码就可以向用户发关文本消息: XM ...
- ORGANISING THE TEST CASES
ORGANISING THE TEST CASES -Test note of “Essential Software Test Design” 2015-09-24 目录 22.1 Test Cas ...
- js实现cookie跨域功能
/** * 设置cookie方法 * @param {string} name cookie键值 * @return {*} 返回cookie值 */ function setCookie_log(c ...
- matplotlib 学习总结
matplotlib 学习总结 作者:csj更新时间:01.09 email:59888745@qq.com 说明:因内容较多,会不断更新 xxx学习总结: 回主目录:2017 年学习记录和总结 # ...
- Android Launcher分析和修改8——AllAPP界面拖拽元素(PagedViewWithDraggableItems)
接着上一篇文章,继续分析AllAPP列表界面.上一篇文章分析了所有应用列表的界面构成以及如何通过配置文件修改属性.今天主要是分析PagedViewWithDraggableItems类,因为在我们分析 ...
- 在layui layer 弹出层中加载 layui table
layui.use('table', function(){ var table = layui.table; layer.open({ type : 1, area : [ "600px& ...
- 不平衡学习 Learning from Imbalanced Data
问题: ICC警情数据分类不均,30+分类,最多的分类数据数量1w+条,只有10个类别数量超过1k,大部分分类数量少于100条. 解决办法: 下采样:通过非监督学习,找出每个分类中的异常点,减少数据. ...
- SQL 逗号分隔将一行拆成多行
and number<=len(a.KOrderID) and type=)=',')