(1)Python所有方向的学习路线(新版)
这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
最近我才对这些路线做了一下新的更新,知识体系更全面了。
(2)Python学习视频
包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。
(3)100多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
在 Python 中,实例方法(instance method),类方法(class method)与静态方法(static method)经常容易混淆。本文通过代码例子来说明它们的区别。
实例方法
Python 的实例方法用得最多,也最常见。我们先来看 Python 的实例方法。
class Kls(object):
def \_\_init\_\_(self, data):
self.data = data
def printd(self):
print(self.data)
ik1 = Kls('leo')
ik2 = Kls('lee')
ik1.printd()
ik2.printd()
输出:
leo
lee
上述例子中,printd
为一个实例方法。实例方法第一个参数为self
,当使用ik1.printd()
调用实例方法时,实例ik1
会传递给self
参数,这样self
参数就可以引用当前正在调用实例方法的实例。利用实例方法的这个特性,上述代码正确输出了两个实例的成员数据。
类方法
Python 的类方法采用装饰器@classmethod
来定义,我们直接看例子。
class Kls(object):
num_inst = 0
def \_\_init\_\_(self):
Kls.num_inst = Kls.num_inst + 1
@classmethod
def get\_no\_of\_instance(cls):
return cls.num_inst
ik1 = Kls()
ik2 = Kls()
print ik1.get_no_of_instance()
print Kls.get_no_of_instance()
输出:
2
2
在上述例子中,我们需要统计类Kls
实例的个数,因此定义了一个类变量num_inst
来存放实例个数。通过装饰器@classmethod
的使用,方法get_no_of_instance
被定义成一个类方法。在调用类方法时,Python 会将类(class Kls)传递给cls
,这样在get_no_of_instance
内部就可以引用类变量num_inst
。
由于在调用类方法时,只需要将类型本身传递给类方法,因此,既可以通过类也可以通过实例来调用类方法。
静态方法
在开发中,我们常常需要定义一些方法,这些方法跟类有关,但在实现时并不需要引用类或者实例,例如,设置环境变量,修改另一个类的变量,等。这个时候,我们可以使用静态方法。
Python 使用装饰器@staticmethod
来定义一个静态方法。
IND = 'ON'
class Kls(object):
def \_\_init\_\_(self, data):
self.data = data
@staticmethod
def checkind():
return IND == 'ON'
def do\_reset(self):
if self.checkind():
print('Reset done for: %s' % self.data)
def set\_db(self):
if self.checkind():
print('DB connection made for: %s' % self.data)
ik1 = Kls(24)
ik1.do_reset()
ik1.set_db()
输出:
Reset done for: 24
DB connection made for: 24
在代码中,我们定义了一个全局变量IND
,由于IND
跟类Kls
相关,所以我们将方法checkind
放置在类Kls
中定义。方法checkind
只需检查IND
的值,而不需要引用类或者实例,因此,我们将方法checkind
定义为静态方法。
对于静态方法,Python 并不需要传递类或者实例,因此,既可以使用类也可以使用实例来调用静态方法。
实例方法,类方法与静态方法的区别
我们用代码说明实例方法,类方法,静态方法的区别。注意下述代码中方法foo
,class_foo
,static_foo
的定义以及使用。
class Kls(object):
def foo(self, x):
print('executing foo(%s,%s)' % (self, x))
@classmethod
def class\_foo(cls,x):
print('executing class\_foo(%s,%s)' % (cls,x))
@staticmethod
def static\_foo(x):
print('executing static\_foo(%s)' % x)
ik = Kls()
# 实例方法
ik.foo(1)
print(ik.foo)
print('==========================================')
# 类方法
ik.class_foo(1)
Kls.class_foo(1)
print(ik.class_foo)
print('==========================================')
# 静态方法
### 最后
> **🍅 硬核资料**:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
> **🍅 技术互助**:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
> **🍅 面试题库**:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
> **🍅 知识体系**:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618317507)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**