网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
‘’’
def func1(self):
print (1)
def func2(*argv):
print (argv)
if name == “main”:
MyClass = type(“MyClass”,(object, ), {“func1”:func1, “func2”:func2})
a = MyClass()
print (type(a))
a.func1()
a.func2(2)
<class ‘main.MyClass’>
1
(<main.MyClass object at 0x01A02270>,2)
3.2 元类的常用模板
‘’’
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
‘’’
‘’‘元类模板 ‘’’
class MyClass(type):
#创建一个空的命名空间,返回一个空的dict
@classmethod
def prepare(mcs, name, bases, **kwargs):
print (“MyClass prepare”)
return super().prepare(name, bases, **kwargs)
def new(mcs, name, bases, namespace):
print (“MyClass new”)
return super().new(mcs, name, bases, namespace)
def init(cls, name, bases, namespace, **kdargv):
print (“MyClass init”)
super().init(name, bases, namespace)
def call(cls, *argv, **kdargv):
print (“MyClass call”)
return super().call(*argv, **kdargv)
class _MyClass(metaclass=MyClass):
def new(cls):
print (“_MyClass new”)
return super().new(cls)
def init(self):
print(“__MyClass init”)
super().init()
if name == “main”:
a = _MyClass()
MyClass prepare
MyClass new
MyClass init
MyClass call
_MyClass new
__MyClass _init
用class语句创建的每个类都隐式的使用type作为元类,可以用metaclass=“指定元类”的方式改变这一默认行为。
3.3 元类的使用
元类是一种非常强大的特性,但总是会是代码更加复杂,将其用于任意类型的类时,这可能会降低代码的鲁棒性,我们必须灵活的使用元类。
‘’’
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
‘’’
class OrderedMeta(type):
@classmethod
def prepare(mcs, name, bases, **kdargv):
return super().prepare(mcs, name, bases, **kdargv)
def new(mcs, name, bases, namespace):
namespace[“orderofattr”] = list(namespace.keys())
return super().new(mcs, name, bases, namespace)
class test(metaclass = OrderedMeta):
first = 8
secord = 2
if name == “main”:
print (test.orderofattr)
print (test.dict.keys())
(1)Python所有方向的学习路线(新版)
这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
最近我才对这些路线做了一下新的更新,知识体系更全面了。
(2)Python学习视频
包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。
(3)100多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!