跟黄哥学python序列文章之python方法链(method chaining)

# 跟黄哥学python序列文章之python方法链(method chaining)

## 写这篇文章来由,有朋友说下面这样的代码看不懂。

choice = raw_input("please input:\n").strip()[0].lower()

很多对于有经验的程序员来说,这些都不是事,

但对于初学者来说,看到这样的语法头有点大。

## 这个其实是面向对象中方法链的概念。

## 请看维基百科上Method chaining的定义

Method chaining, also known as named parameter idiom,

is a common syntax for invoking   multiple method calls

in object-oriented programming languages.

Each method returns an   object, allowing the calls

to be chained together in a single statement without requiring

variables to store the intermediate results.

Local variable declarations are syntactic

sugar because of the difficulty humans have with deeply nested method calls.

A method chain is also known as a train wreck due to the increase

in the number of methods that come one after another in the same

line that occurs as more methods are chained together

even though line breaks are often added between methods.

## 具体在python中,请看黄哥的分析:

有的python初学者对python方法连续调用不是很清楚,像雾里看花一样。

python一切都是对象,对象调用它的方法,如果带返回值,放回值也是对象,

这个返回值也有方法,当然就可以用点号调用它的方法,

如此下去,就是python方法链调用也。

## 如何设计方法链python代码

# coding:utf-8

"""

如何通过学习python学会编程

https://github.com/pythonpeixun/article/blob/master/python/how_to_learn_python.md

黄哥python远程视频培训班

https://github.com/pythonpeixun/article/blob/master/index.md

黄哥python培训试看视频播放地址

https://github.com/pythonpeixun/article/blob/master/python_shiping.md

黄哥python培训 咨询qq:1465376564

"""

class Person(object):

"""方法链小sample"""

def name(self, value):

self.name = value

return self # 返回实例对象自己才能再调用实例对象的方法。

def work(self, value):

self.working = value

return self

def introduce(self):

print "你好, 我的名字:", self.name, ",我的工作:", self.working, ",教初学者学会编程!"

person = Person()

person.name("黄哥").work("黄哥python培训").introduce()

## php方法链代码

<?php

/*

黄哥php培训 咨询qq:1465376564

https://github.com/pythonpeixun/article/blob/master/php_education.md

*/

class Person{

public $name;

public $working;

public function setName($value){

$this->name = $value;

return $this;

}

public function work($value){

$this->working = $value;

return $this;

}

public function introduce(){

echo "你好, 我的名字:".$this->name.",我的工作:".$this->working.",教初学者学会编程!\n";

}

}

$person = new Person();

$person->setName("黄哥")->work("黄哥php培训")->introduce();

[点击黄哥python培训试看视频播放地址](https://github.com/pythonpeixun/article/blob/master/python_shiping.md)

[黄哥python远程视频培训班](https://github.com/pythonpeixun/article/blob/master/index.md)

时间: 2024-10-27 05:36:40

跟黄哥学python序列文章之python方法链(method chaining)的相关文章

Python 速学!不懂怎么入门python的小白看这篇就够了!

Python是一种非常流行的脚本语言,而且功能非常强大,几乎可以做任何事情,比如爬虫.网络工具.科学计算.树莓派.Web开发.游戏等各方面都可以派上用场.同时无论在哪种平台上,都可以用 Python 进行系统编程. 机器学习可以用一些 Python 库来实现,比如人工智能常用的TensorFlow.也可以用像 NLTK 这样的 Python 库进行自然语言处理(NLP). 本文讨论基本的 Python 编程,后续会写一些 Python 编程的实际案例. 大家在学python的时候肯定会遇到很多难

收集了一些python的文章

来自: 戴铭 2010-08-31 17:52:31 newthreading - safer concurrency for Python 安全并发(1回应) http://www.starming.com/index.php?action=plugin&v=wave&tpl=union&ac=viewgrouppost&gid=73&tid=7607 几个 Google App Engine 开源的Blog程序 http://www.starming.com/i

【k哥学Python系列】一Python入门(一)

前言 各位看博客的园友们,大家好,我就是那个风流倜傥的KK,还记得我那篇2019年的年中总结博客吗?我想有许多看博客的园友是没有读过我那篇文章的,KK很生气,后果很严重(开个玩笑了,怎么可能).给大家一个传送门2019年终总结,这篇博客总结了KK2019年求职的一些门槛和自己2019年的收获,希望对正在求职的你或者马上需要求职的园友们一些宝贵的建议(虽说是水文,但还是有点作用的),文章结尾的时候我给自己2020年定下了几个目标. 计划二的时候说要学一门后台开发语言,正在看标题的你已经知道是什么开

python 优秀文章索引

** 说明: 主要是汇总看过的优秀的文章url * python central: http://www.pythoncentral.io/* IronPython - Home : http://ironpython.codeplex.com/* FrontPage - Python Wiki : https://wiki.python.org/moin/* 如何成为 Python 高手 - 开源中国社区 : http://www.oschina.net/news/19085/how-to-b

利用Python进行文章特征提取(二)

本篇blog是利用Python进行文章特征提取的续篇,主要介绍构建带TF-IDF权重的文章特征向量. In [1]: # 带TF-IDF权重的扩展词库 # 在第一篇文档里 主要是利用词库模型简单判断单词是否在文档中出现.然而与单词的顺序.频率无关.然后词的频率对文档更有意义.因此本文将词频加入特征向量 In [2]: # 1.计算单词在文档中的频率 from sklearn.feature_extraction.text import CountVectorizer In [5]: docume

Python 序列操作符与函数

Python序列包括:元组.列表.字符串. 1.序列共同支持的函数: 函数 功能 说明 cmp(seq1,seq2) 比较序列大小 从左到右依次比较,直到比较出大小 len(seq1) 获取序列长度 如果seq1为字符串,返回字符串中字符数,否则返回序列中元素个数 max(seq1)或min(seq1)   求最大值或最小值 seq1字符串:返回字符串中ASCII码最大或最小的字符.也可比较序列中元素或多个序列 sorted(seq1) 按由小到大顺序排列   sum(seq1) 求和 对数字型

python学习笔记:python序列

python序列包括字符串.列表和元组三部分,下面先总的说一下python序列共有的一些操作符和内建函数. 一.python序列 序列类型操作符 标准类型的操作符一般都能适用于所有的序列类型,这里说一下序列类型操作符. 1. 成员关系操作符(in.not in) 成员关系操作符是用来判断一个元素是否属于一个序列的.具体语法: 对象 [not] in 序列 2. 连接操作符(+) 这个操作符允许我们把一个序列和另一个相同类型的序列做连接,具体语法: sequence1 +sequence2 3.

Python序列——字符串

字符串 1 string模块预定义字符串 2 普通字符串与Unicode字符串 3 只适用于字符串的操作 4 原始字符串 5 Unicode字符串操作符 内建函数 1 标准类型函数与序列操作函数 2 字符串类型函数 字符串内建函数 字符串特有性质 1 转义字符 2 三引号 本文介绍Python序列中的字符串. 1. 字符串 字符串支持序列操作. 1.1 string模块预定义字符串 >>> import string >>> string.ascii_letters '

Python——序列

#!/usr/bin/python #coding:utf8 ''' Python——序列 字符串的操作 ''' s = 'abcdefg' print s print s[2] print s[-1] print s[0:1] print s[-3:] ''' 开始下标位 结束下表位 隔一个取一个 ''' print s[0::2] print s[-3:-1:2] ''' 开始下标位 结束下表位 -2倒的取 隔一个取一个 ''' print s[::-2] 打印结果: abcdefgcgae