#coding:utf-8
#函数,模块,模块属性__name__#注意:函数和调用参数要对象,导入执行,解释执行#def func(name):#print('我喜欢%s'%name)#if __name__=='__main__':#入口 #如果由解释器解释执行当前模块#func()#else:#而是由其他导入执行#print('被其他模块导入执行')
#type
print(type(99)==int)#输出True
print(type('ben')==str)#输出True
print(type(88)==type('23'))#输出False
deffun():print('110')importtypesprint(type(fun)==types.FunctionType) #是不是函数(自定义的)#输出True
print(type(fun)==types.BuiltinFunctionType)#是不是内置函数(系统的)#输出False
print(type([x for x in range(22)])==list) #list推到式子#输出True
print(type(x for x in range(22))==list) #
#输出False
print(type(x for x in range(22))==types.GeneratorType) #生成器#输出True
#匿名函数 type内置,types是块函数
print(type(lambda x:x*2)==types.LambdaType)#输出True
#面向对象编程#自定义类 class关键字#Python3.x自定义()参数默认留空--->新式类(自动集成对象的基类(超类))object
#__init__,具有特殊含义#类里面定义函数(实例方法--->由实例对象去掉用的方法)
classStudent():#实例对象创建之后初始化数据
def __init__(self,name,id,age): #self 指向当前实例对象本身
print('正在初始化')
self.name=name
self.id=id
self.age=agedef __del__(self):#析构函数(自动调用函数)
print('Student中的%s正在被销毁'%self.name)defget_name(self):print(self.name)
@classmethod#类方法
defcls_fun(cls):print('这是类方法')print(cls)
@staticmethod#静态方法
defstart_up():print('静态方法')#制造对象
stu=Student('lsy',22,12)#构建实例对象
stu.get_name() #实例方法
stu.cls_fun() #类方法
stu.start_up() #静态方法
#类对象
Student.cls_fun()
Student.start_up()#Student.get_name() #如果没有创建实例,则会报错(实例方法必须创建实例)#静态方法直接类名,静态方法()
#__函数名称__特殊含义的函数#class Person():#def __init__(self,name,age):#self.name=name#self.age=age#def __call__(self,*args,**kwargs):#print('当前对象被调用')#return self.name#
#p1=Person('王妃',11) #p1是创建实例对象本身#print(p1())
#class Person():#def __new__(cls, *args, **kwargs):#print('构造函数在初始化之前执行')#return super(Person,self).__new__(cls)#def __init__(self,name,age):#self.name=name#self.age=age#print('初始化函数是在构造函数之后执行 ')#
#p1=Person('李大兵',12) #创建一个实例对象
#访问作用域#__name__(具有特殊含义)#class Person():#_min=10 #保护变量#__max=99 #私有变量#
#def __init__(self,name,age):#self.name=name#self.age=age#def __work(self):#print('我是私有方法')#
#
#class Boy(Person):#def __init__(self,name,age,sex):#super(Boy,self).__init__(name,age)#self.sex=sex#
#
#a_person=Person('tom',99)#b_boy=Boy('lucy','11',1)#
#print(Person._min)#print(Person.__max) #双下划线__属于私有变量(只能在当前类内部使用)
#继承和复写#class Person():#def sleep(self):#print('Person正在睡觉')#
#class Boy(Person):#def sleep(self):#print('boy正在睡觉')#def play_game(self):#print('boy正在睡觉')#
#p=Person()#b=Boy()#p.sleep()##输出 Person正在睡觉#b.sleep()##输出 boy正在睡觉#b.play_game()##输出 boy正在睡觉#
#print(isinstance(p,Person))##输出True#print(isinstance(b,Boy))##输出True#print(isinstance(b,Person))##输出True#print(isinstance(p,Boy))#输出False
#多态#class Person(): #父类#def sleep(self):#print('Person正在睡觉')#
#class Boy(Person):#子类#def sleep(self):#print('boy正在睡觉')#def play_game(self):#print('boy正在睡觉')
#非类里面的函数(模块的全局函数)#def show(p):#p.sleep()#
#p=Person()#b=Boy()#show(p)#输出 Person正在睡觉#show(b)#输出 boy正在睡觉
#鸭子形态
classPerson():defsleep(self):print('Person正在睡觉')classBoy():defsleep(self):print('boy正在睡觉')defplay_game(self):print('boy正在睡觉')defshow(p):
p.sleep()
p=Person()
b=Boy()
show(p)#输出 Person正在睡觉
show(b)#输出 boy正在睡觉#没有集成体系关系,表现多种形态
#print(Student.__class__.__bases__)
#调用创建实例对象#s1=Student('ben',1,22) #创建实例对象--->传递参数(参数由谁决定)--->初始化函数#s1.get_name()#输出#正在初始化#ben#ben正在被销毁
#代码执行完毕--->自动调用__del__()---->销毁对象
#类变量和实例变量#class Person():#age=19#def __init__(self,age):#self.age=age#
#personal1=Person(22)#print(type(personal1))#输出#print(Person.age)#输出19#print(personal1.age)#输出22
#注意点:#关键字 class#类名(第一个字母大小)#类名()--->参数#新试类和经典类#Python2#class MyClass(): #经典类#pass#class Student(object): #新式类#pass
#Python3---->#class Student(): #父类留空---->默认继承object对象()#pass
#类模型里面self