资讯专栏INFORMATION COLUMN

小李飞刀:python你在前面飞,欲饮琵琶马上催

K_B_Z / 3205人阅读

摘要:南京现在算是我的一个治愈城市了,带着重重的悲伤去,幸好落雪的瞬间将我治愈。年,世界和平,平安喜乐。继承与多态继承就是从现有的类进行继承,被继承的为超类或者父类也就是爸爸,新的类为子类。

叨叨点啥

2018年的最后一天。
回顾这一年,获得很多也失去很多。
今年去了很多的地方,成都,重庆,峨眉山,天津,杭州,南京。
杭州是我特别喜欢的城市,有很多美好的记忆,也有很多失落的时刻。
南京现在算是我的一个治愈城市了,带着重重的悲伤去,幸好落雪的瞬间将我治愈。
今年努力回温了很多次的这两年,发现很多事情都在最早的时候就有预知,我可以努力做好的事情却没有做到,这就是为什么我会背负悲伤的原因。
2019年,要更加努力,想做到的事情就一定要做到。
然后祝福我爱的人,一切都好。
希望有缘,还能再度相见吧。

2019年,世界和平,平安喜乐。

认真学习的分割

恩今天的鸡血针剂,还是用同一管吧~
每一个优秀的人,都有一段沉默的时光。那一段时光,是付出了很多努力,忍受孤独和寂寞,不抱怨,不诉苦,日后说起时,连自己都能被感动的日子。

面向对象编程 类和实例
面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。

class关键字来定义类。
定义好后就可以创建实例,然后后自由的给一个实例变量绑定属性。

因为类可以起到模板的作用,所以在创建实例的时候,可以绑定一些必要的属性。用__init__方法。

class Student(object):

    def __init__(self, name, score):
        self.name = name
        self.score = score
注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。
数据封装

访问实例的数据的时候,因为数据本身就属于实例,所以就不需要外部数据去访问。
在类的内部定义好这些访问数据的函数,就可以“封装”数据了——类的方法。

class Student(object):

    def __init__(self, name, score):
        self.name = name
        self.score = score

    def print_score(self):
        print("%s: %s" % (self.name, self.score))
bart = Student()
bart.print_score() #自带的函数,调用的时候很方便,不需要知道内部数据的定义
访问限制

为了让内部属性不被外部访问,就在属性的名称前__(2个下划线),然后就变成了私有变量。

class Student(object):

    def __init__(self, name, score):
        self.__name = name
        self.__score = score

    def print_score(self):
        print("%s: %s" % (self.__name, self.__score))

这样外部就不能访问__name__score了,因为外部代码不能随意修改对象内部的状态,代码健壮多啦!
如果涉及到需要外部代码修改或者访问私有变量的话,可以在类里面增加方法。
这样在传参之前可以先做验证,保证传入的参数可用。

需要注意的是,在Python中,变量名类似__xxx__的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量。

有些时候,你会看到以一个下划线开头的实例变量名,比如_name,这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”。

继承与多态

继承就是从现有的类进行继承,被继承的为超类或者父类(Base class、Super class)(也就是爸爸),新的类为子类(Subclass)。

class Animal(object):
    def run(self):
        print("Animal is running....")
#以下为两个子类
class Dog(Animal):
    pass
    
class Cat(Animal):
    pass

当子类和父类都存在相同的方法的时候,子类的方法覆盖了父类的,在代码运行的时候,总是会调用子类的方法,这就是多态。
在子类创建实例的时候,不仅具备了子类的数据类型,同样也继承了父类的数据类型,所以子类的实例可能存在多个数据类型。
但反过来的规则则不成立。

对于一个变量,我们只需要知道它是Animal类型,无需确切地知道它的子类型,就可以放心地调用run()方法,而具体调用的run()方法是作用在Animal、Dog、Cat还是Tortoise对象上,由运行时该对象的确切类型决定,这就是多态真正的威力:调用方只管调用,不管细节,而当我们新增一种Animal的子类时,只要确保run()方法编写正确,不用管原来的代码是如何调用的。这就是著名的“开闭”原则:
对扩展开放:允许新增Animal子类;
对修改封闭:不需要修改依赖Animal类型的run_twice()等函数。
静态语言vs动态语言

动态语言的“鸭子类型”。
静态语言不限制传入的类型,只需要保证传入的对象有相应的方法即可。
Python的“file-like object“就是一种鸭子类型。
这个还蛮特别的...(碎碎念)

获取对象信息

emmm....再次对标题陷入沉思
了解对象是什么类型,有哪些方法的操作

使用type()

基本类型都可以用type()来判断,包括变量指向函数或者类。
type()函数返回对应的Class类型。

使用isinstance()

能用type()判断的基本类型也可以用isinstance()判断,并且还可以判断一个变量是否是某些类型中的一种。

使用dir()

如果要获得一个对象的所有属性和方法,可以使用dir()函数,它返回一个包含字符串的list。

祝大家新年快乐~~

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

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

相关文章

  • 小李:磨刀霍霍继续向python

    摘要:例如做累加,函数生成整数序列,函数转换成。因为不能重复,所以中没有重复的。创建,需要提供一个作为输入合集。重复元素在中自动被过滤。添加元素,重复添加无效果删除元素 写在前面的一点罗里吧嗦小唠叨昨晚的python看到了快12点吧,然后进度相对来说还算满意,只能说一点点推进,庆幸自己的大学还是一个比较认真的小码农,现在捡起来还算比较得心应手(pia飞自己,算法什么的还没到好吗!)好好学习呗...

    txgcwm 评论0 收藏0
  • 小李python你慢点,我的脑子还在后面追

    摘要:默认参数设置默认参数时,有几点要注意一是必选参数在前,默认参数在后,否则的解释器会报错二是如何设置默认参数。注意此处,获得的其实是的拷贝,函数内对的改变不会影响到。使用递归函数需要注意防止栈溢出。 总是在最前面的叨逼叨 最近总是在想成长这两个很常常被提起的事情,这对于一个已经25岁的半中年而言,已经是一个不太能高频提起的词。但是,最近一些事情吧,总让我觉得我的生长期似乎比正常人来的晚了...

    kevin 评论0 收藏0
  • 小李:leetcode我又来啦~

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

    zhangxiangliang 评论0 收藏0
  • 小李:醉卧沙场君莫笑,python你还是等等我

    摘要:前面的一些碎碎念两天的耽搁,思考了下,虽然需要全面基础的学习,但是重点还是应该放在实战上。更简洁的版本是如果文件很小,一次性读取最方便如果不能确定文件大小,反复调用比较保险如果是配置文件,调用最方便。 前面的一些碎碎念 两天的耽搁,思考了下,虽然需要全面基础的学习,但是重点还是应该放在实战上。所以后续要速速的推倒这个教程了,用一些数据来实行一些分析:) 认真学习的分割线 打打打打鸡血!...

    Hydrogen 评论0 收藏0
  • 小李python老师我今天没有灵感起名字了

    摘要:用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数也可以把匿名函数作为返回值返回。 日常唠嗑 最近对数据岗位看了不少,感觉经验和技术都是很必要的门槛,要更加的努力啊。今天看了Alex大叔的2019年运,感觉真的是很需要变革的一年了。转型和脱离舒适圈应该是2019年比较重要的关键词了。 show...

    hlcfan 评论0 收藏0

发表评论

0条评论

K_B_Z

|高级讲师

TA的文章

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