一、Python基础,,Python基础

python元类:**type()   **

python典型十分

丰裕名称 描述
BaseException 全数极度的基类
SystemExit 解释器须要退出
KeyboardInterrupt 客户中断实行(日常是输入^C卡塔尔(قطر‎
Exception 常规错误的基类
StopIteration 迭代器未有越来越多的值
GeneratorExit 生成器(generator卡塔尔(قطر‎产生极其来通告退出
StandardError 全部的内建正规十二分的基类
ArithmeticError 全体数值总计错误的基类
FloatingPointError 浮点计算错误
OverflowError 数值运算超出最大范围
ZeroDivisionError 除(或取模卡塔尔零 (全数数据类型卡塔尔(قطر‎
AssertionError 断言语句败北
AttributeError 对象未有那本本性
EOFError 未有内建输入,达到EOF 标识
EnvironmentError 操作系统错误的基类
IOError 输入/输出操作失利
OSError 操作系统错误
WindowsError 系统调用失利
ImportError 导入模块/对象退步
LookupError 无效数码查询的基类
IndexError 种类中尚无此索引(index卡塔尔(英语:State of Qatar)
KeyError 映射中未有那个键
MemoryError 内部存款和储蓄器溢出荒谬(对于Python 解释器不是致命的卡塔尔(قطر‎
NameError 未评释/伊始化对象 (没有质量卡塔尔国
UnboundLocalError 访问未伊始化的本土变量
ReferenceError 弱援引(Weak reference卡塔尔(قطر‎试图访谈已经破烂回笼了的指标
RuntimeError 常常的运维时不当
NotImplementedError 尚未落实的方法
SyntaxError Python 语法错误
IndentationError 缩进错误
TabError Tab 和空格混用
SystemError 通常的解释器系统错误
TypeError 对品种无效的操作
ValueError 传入无效的参数
UnicodeError Unicode 相关的荒诞
UnicodeDecodeError Unicode 解码时的荒诞
UnicodeEncodeError Unicode 编码时不当
UnicodeTranslateError Unicode 转变时不当
Warning 警示的基类
DeprecationWarning 关于被弃用的性状的警示
FutureWarning 关于协会未来语义会有变动的警告
OverflowWarning 旧的有关机关进级为长整型(long卡塔尔的告诫
PendingDeprecationWarning 关于特性将会被丢掉的警戒
RuntimeWarning 疑忌的周转时作为(runtime behavior卡塔尔(قطر‎的警示
SyntaxWarning 狐疑的语法的警报
UserWarning 顾客代码生成的警戒

Python内置函数(65卡塔尔(قطر‎——type,python内置65type

乌Crane语文档:

class type(object)

class type(name, bases, dict)

With one argument, return the type of an object. The return value is a
type object and generally the same object as returned by
object.__class__.

The isinstance() built-in function is recommended for testing the type
of an object, because it takes subclasses into account.

With three arguments, return a new type object. This is essentially a
dynamic form of the class statement. The name string is the class
name and becomes the __name__ attribute; the bases tuple itemizes
the base classes and becomes the __bases__ attribute; and the dict
dictionary is the namespace containing definitions for class body and is
copied to a standard dictionary to become the __dict__ attribute. 

 

说明:

  1. 函数只传入三个参数时,再次来到参数对象的品类。
再次来到值是一个项目对象,经常与对象.__ class__归来的靶子雷同。

#定义类型A
>>> class A:
    name = 'defined in A'

#创建类型A实例a
>>> a = A()

#a.__class__属性
>>> a.__class__
<class '__main__.A'>

#type(a)返回a的类型
>>> type(a)
<class '__main__.A'>

#测试类型
>>> type(a) == A
True

  2.
固然可以通过type函数来检查评定多少个对象是不是是有个别项指标实例,不过更推荐应用isinstance函数,因为isinstance函数思虑了父类子类间世襲关系。

#定义类型B,继承A
>>> class B(A):
    age = 2

#创建类型B的实例b
>>> b = B()

#使用type函数测试b是否是类型A,返回False
>>> type(b) == A
False

#使用isinstance函数测试b是否类型A,返回True
>>> isinstance(b,A)
True

  3.
函数另大器晚成种接纳办法是流传3个参数,函数将运用3个参数来创设三个新的等级次序。在那之中第四个参数name将用作新的类其他类名称,即类型的__name__品质;第一个参数是二个元组类型,其成分的品种均为类品种,将用作新成立类型的基类,即类型的__bases__属性;第多个参数dict是二个字典,包涵了新创设类的基点定义,即其值将复制到类型的__dict__属性中。

#定义类型A,含有属性InfoA
>>> class A(object):
    InfoA = 'some thing defined in A'

#定义类型B,含有属性InfoB
>>> class B(object):
    InfoB = 'some thing defined in B'

#定义类型C,含有属性InfoC
>>> class C(A,B):
    InfoC = 'some thing defined in C'

#使用type函数创建类型D,含有属性InfoD
>>> D = type('D',(A,B),dict(InfoD='some thing defined in D'))

#C、D的类型
>>> C
<class '__main__.C'>
>>> D
<class '__main__.D'>

#分别创建类型C、类型D的实例
>>> c = C()
>>> d = D()

#分别输出实例c、实例b的属性
>>> (c.InfoA,c.InfoB,c.InfoC)
('some thing defined in A', 'some thing defined in B', 'some thing defined in C')
>>> (d.InfoA,d.InfoB,d.InfoD)
('some thing defined in A', 'some thing defined in B', 'some thing defined in D')

 

乌Crane语文书档案: class type ( object 卡塔尔 class type ( name , bases , dict 卡塔尔(英语:State of Qatar) With
one argument, return the type of an object . The…

一、Python基础,,Python基础

 

数学操作符

操作符 操作 例子 求值为
** 指数 2 ** 3 8
% 取余数 22 % 8 6
// 商数取整 22 // 8 2
/ 除法 22 / 8 2.75
* 乘法 3 * 5 15
减法 5 – 2 3
+ 加法 2 + 2 4

 

 

 

 

 

 

 

 

 字符串操作符

操作符 操作 例子 求值为
* 字符串复制 ‘a’ * 3 ‘aaa’
+ 字符串连接 ‘a’ + ‘b’ ‘ab’

 

 

 

 

 3种基本数据类型及其转变函数

数据类型 转换函数 函数返回值类型
int int() 整型
float float() 浮点型
str str() 字符串

 

 

 

 

 

 其余函数

函数 函数返回值类型 作用
print()   文本输出(到屏幕)
input() 字符串 文本输入(通过键盘)
len() 整型 求取字符串的字符数

 

 

 

 

 

数学操作符 操作符
操作 例子 求值为 ** 指数 2 ** 3 8 % 取余数 22 % 8 6 // 商数取整 22
// 8 2 / 除法 22 / 8 2.75 * 乘法…

元类是python高阶语法.
合理的运用能够裁减大气重复性的代码.

 

元类实际上做了以下三方面的办事:

 

  • 干预成立类的历程
  • 修改类
  • 回到纠正今后的类

 

何以采用元类?

 

为何要使用元类这种歪曲且易于出错的效应?
日常意况下,大家并不会动用元类,99%的开拓者并不会用到元类,所以平日不要思索这些主题材料。
元类主用用于制造API,三个独立的例子就是Django的ORM。
它让我们得以这么定义多个类:

 

class Person(models.Model):
  name = models.CharField(max_length=30)
  age = models.IntegerField()

 

运维上边包车型大巴代码:

guy = Person(name='bob', age='35')
print(guy.age)

归来的结果是int品类实际不是IntegerField目的。这是因为models.Model应用了元类,它会将Python中定义的字段调换来数据库中的字段。
经过行使元类,Django将复杂的接口调换来轻松的接口。

 

原型:type(类名,基类元组(可以为空,用于继承), 包含属性或函数的字典)

 以下三种写法都能够:

type(‘Class’,(object,),dict(hello=fun()))

type(‘Class’,(object,),{“hello”:fun()})

1、class 自定义的类名称

2、(object,)是继承类,的元组,假诺唯有多少个就写这种局势(object,卡塔尔(قطر‎;三个(object,xxxx,卡塔尔国

3、dict(hello=fun(卡塔尔(英语:State of Qatar)卡塔尔(قطر‎ 或 {“hello”:fun(卡塔尔}
第三个参数,是二个字典等号左是
自定义的法子名,侧边是已写好的法子名,那几个要注意,有参数且未有暗中同意值的图景下,要加括号;

 

def fun():
    print('hello world!')


if __name__=="__main__":

    h = type('Hello',(object,),dict(hello=fun()))
    tc = h()
    tc.hello

 

引用:

h 也正是收到Hello类;tc
= h(卡塔尔(قطر‎实例化类;tc.hello方法,调用的骨子里是我们定义的fun方法。

    Hello = type('Hello',(object,),dict(hello=fun()))
    tc = Hello()
    tc.hello

 type(卡塔尔动态创造类后,还是能加多愈来愈多的法子和性质:

def mysql():
    conn = pymysql.connect(host='127.0.0.1',port=3306 ,user='root' ,passwd='q123456' ,db='amsql' )
    cur = conn.cursor()
    sql = "SELECT * FROM amt_case_interface_table"
    ret = cur.execute(sql)
    print(cur.fetchmany(3))
    #conn.commit()

    cur.close()
    conn.close()

Hello.mysql = mysql()

调用:

tc.mysql

 

Linux and
python学习调换1,2群已满.

Linux and
python学习交换3群新开,迎接参加,一齐学习.qq 3群:563227894

不前行,不倒退,停止的事态是从未有过的.

风度翩翩道前进,与君共勉,

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注