资讯专栏INFORMATION COLUMN

小李飞刀:Python我又来啦,例无虚发~

ACb0y / 1638人阅读

摘要:一点点小刀刀晚上收到了某招聘软件的的消息,心里慌的不行。所以在上面的代码中,我们可以考虑把改为来更好的看出继承关系。定义方法,在被用于循环时返回迭代对象,循环会不断的调用方法拿到下一个值,直到终止。

一点点小刀刀

晚上收到了某招聘软件的HR的消息,心里慌的不行。
因为很想换岗位了,可是当机会来的时候,我却只能表示能力不行。
所以要速速的加油了!!!

开始学习的分割

日常一点点小鸡血!
请不要假装努力,结果不会陪你演戏。

面向对象高级编程 使用@property

Python内置的@property将方法变成属性调用。

class Student(object):

    @property
    def score(self):
        return self._score

    @score.setter
    def score(self, value):
        if not isinstance(value, int):
            raise ValueError("score must be an integer!")
        if value < 0 or value > 100:
            raise ValueError("score must between 0 ~ 100!")
        self._score = value

加上@property后就变成了getter的方法,@property本身又创建了另一个装饰器score.setter,负责把一个setter方法变成属性赋值。

只定义getter方法,不定义setter方法就是一个只读属性

做个作业~

多重继承

通过多重继承,一个子类可以继承多个父类的属性与方法。

class Father(object):
    pass
class Mother(object):
    pass
class children(Father,Mother):
    pass
#这样孩子就同时继承了爸爸和妈妈的属性
MixIn

设计继承关系的时候,多重继承的设计被成为MixIn。
所以在上面的代码中,我们可以考虑把Father改为FatherMixIn来更好的看出继承关系。

class FatherMixIn(object):
    pass
class MotherMixIn(object):
    pass
class children(FatherMixIn,MotherMixIn):
    pass

MixIn的目的就是给一个类增加多种功能,所以在设计类的时候,尽量考虑多重继承,少用复杂的多层次的类的继承。

Python自带的很多库也使用了MixIn。举个例子,Python自带了TCPServer和UDPServer这两类网络服务,而要同时服务多个用户就必须使用多进程或多线程模型,这两种模型由ForkingMixIn和ThreadingMixIn提供。通过组合,我们就可以创造出合适的服务来。

很多语言仅有单一继承的情况,如Java。

定义类

__str__
定义__str__方法,可以打印的好看

直接显示变量调用的不是__str__(),而是__repr__(),两者的区别是__str__()返回用户看到的字符串,而__repr__()返回程序开发者看到的字符串,也就是说,__repr__()是为调试服务的。

__iter__
定义__iter__方法,在被用于for...in循环时返回迭代对象,for循环会不断的调用__next__()方法拿到下一个值,直到5终止。

__getitem__
定义__getitem__方法,让实例变成list,但并不是真实的list,所以通过定义,让它变得像list一样可操作性。
要正确实现一个__getitem__()还是有很多工作要做的,因为传入的参数可能不是int。

__getattr__
可以尝试链式调用,这个等我明天脑子清晰的时候详细研究下。
代码先贴

class Chain(object):

def __init__(self, path=""):
    self._path = path

def __getattr__(self, path):
    return Chain("%s/%s" % (self._path, path))

def __str__(self):
    return self._path

__repr__ = __str__
#无论API怎么变,SDK都可以根据URL实现完全动态的调用

__call__

还得看第二遍...明天一定要弄懂了

晚安~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42926.html

相关文章

  • 小李飞刀:leetcode我又来啦~

    摘要:在拖完地板之后,想想还是补上今天的题解吧感谢小佳扬推荐的题目,默默的复习了一把递归第一题难度中等实现,即计算的次幂函数。因为是次幂,如果直接循环,复杂度就是了。次幂可以拆解为的方式。每次拆解,最后最小的单位应该为。 写在前面 年前嘛,就是各种涣散的状态。在拖完地板之后,想想还是补上今天的题解吧~感谢小佳扬推荐的题目,默默的复习了一把递归~ 第一题 50. Pow(x, n)难度:中等 ...

    zhangxiangliang 评论0 收藏0
  • 小李飞刀python我来做题啦

    摘要:好久不见最近都在忙年底的年会,还沉迷于学习统计学,教程还停留在基础语法。做题做题无论如何,数据结构还是很重要的,所以准备每天刷的题目啦。第一题移除元素给定一个数组和一个值,你需要原地移除所有数值等于的元素,返回移除后数组的新长度。 好久不见 最近都在忙年底的年会,还沉迷于学习统计学,python教程还停留在基础语法。但是仔细规划了下,还是要好好的瞄准目标前行。所以准备呢,实战走起来。 ...

    nevermind 评论0 收藏0
  • 小李飞刀:做题第六弹!

    摘要:给定的字符串只含有小写英文字母,并且长度不超过。其他这题了,要重做看了其他的人的题解,使用的是无限逼近中位值的办法,理论基础应该是泰勒公式。万万没想到居然用到了泰勒公式手工执行了下算法,反而理解的更快,但是泰勒公式还得再复习下。 写在前面的话 今天持续做题ing,python有意思~今天的题有点虐心...兴许是我太笨了...会努力学习的!动态规划我来啦~ 开始做题 第一题 459. 重...

    BigNerdCoding 评论0 收藏0
  • 小李飞刀python新年第一杀

    摘要:新年快乐年终于来了,突然觉得有点如释重负。大概年实在是太沉重了吧。年应该是要充满拼劲的一年希望可以成功转型自己喜欢的职业。开始认真学习了鸡血一波。建议类的属性名和实例属性名不要重复,否则类的属性名会覆盖。 新年快乐 2019年终于来了,突然觉得有点如释重负。大概2018年实在是太沉重了吧。2019年应该是要充满拼劲的一年!!!!希望可以成功转型自己喜欢的职业。 开始认真学习了 鸡血一波...

    glumes 评论0 收藏0
  • 小李飞刀python请与我一起愉快的玩耍吧!

    摘要:属性,可以函数的名字在代码运行期间动态增加功能的方式,称之为装饰器。本质上,就是一个返回函数的高阶函数。比如,定义一个能打印日志的。接受函数作为参数,要放置在函数定义处。一个完整的的代码如下记录的是传入的的值,位置在嵌套内或者带参数的如下。 又是一段叨叨 如果总是担心能不能做到的话,那就干脆不要做了。想做的事情还是一往无前的好,什么都不想,就努力冲冲冲吧! 装饰器 因为函数是一个对象。...

    FuisonDesign 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<