Python笔记13~函数,模块,模块属性__name__

#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


def fun():
    print('110')
import  types
print(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__,具有特殊含义
#类里面定义函数(实例方法--->由实例对象去掉用的方法)
class Student():
    #实例对象创建之后初始化数据
    def __init__(self,name,id,age):  #self 指向当前实例对象本身
        print('正在初始化')
        self.name=name
        self.id=id
        self.age=age
    def __del__(self):#析构函数(自动调用函数)
        print('Student中的%s正在被销毁'%self.name)

    def get_name(self):
        print(self.name)


    @classmethod #类方法
    def cls_fun(cls):
        print('这是类方法')
        print(cls)


    @staticmethod   #静态方法
    def start_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正在睡觉





#鸭子形态
class Person():
    def sleep(self):
        print('Person正在睡觉')

class Boy():
    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正在睡觉
#没有集成体系关系,表现多种形态





#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))
#输出<type 'instance'>
#print(Person.age)
#输出19
# print(personal1.age)
#输出22


#注意点:
#关键字 class
#类名(第一个字母大小)
#类名()--->参数
#新试类和经典类
#Python2
# class MyClass(): #经典类
#     pass
# class Student(object): #新式类
#     pass



#Python3---->
# class Student(): #父类留空---->默认继承object对象()
#     pass

#类模型里面self

 

posted @ 2018-03-07 09:41  零度咖啡  阅读(251)  评论(0)    收藏  举报