1

面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,例如:JAVA。
面向过程把函数作为程序的基本单元,例如:C语言。

class Person(object):
    def __init__(self,name,age)    #__init__初始化方法,self为必传,指向创建的实例本身
        self.__name=name            #__name为私有属性,无法直接访问,可以添加getset方法,或者通过_Person__name访问
        self.__age=age
    def set_name(self,name)
        return self.__name=name
    def get_name(self)
        return self.__name
    def print_info(self)
        print('Name:-> ',self.name,'Age:-> ',self.age)

使用Person类:

    psn=Person('jim',22)        #创建Person实例
    psn.print_info()            #使用方法

继承:

class Student(Person):
    def get_name(self):
        return self.__name+'  --'

测试:

stu=Student('jim',22)
stu.print_info()        #Name:-> jimAge:-> 22 可以使用父类方法
stu.get_name()          #jim  --    覆盖父类的方法

多态

def run_twice(Person):
    Person.get_name()

测试

run_twice(psn)    #jim
run_twice(stu)    #jim  -- 在这里,静态语言需要传入的必须是psn/stu,而动态语言只要传入有get_name()方法的对象就可以

获取对象的信息(反射机制):
type() 用来判断基本类型
types模块中的常量 用来判断一个对象是否是函数
使用isinstance(实例,类) 用来判断实例是否是类的子类或者自己的实例
isinstance([1, 2, 3], (list, tuple)) 判断前者是否是后者中的一个
hasattr(对象,属性) 判断是否存在此属性
setattr(对象,属性) 为对象设置属性
getattr(对象,属性) 获取对象的属性

type('123')==str    #True
type('123')==type('456')    #True
type(run_twice))==types.FunctionType    #True
type(abs)==types.BuiltinFunctionType
type(lambda x: x)==types.LambdaType
type((x for x in range(10)))==types.GeneratorType

二十一
1.4k 声望867 粉丝

无论遇到多大的困难,你总是能扛过去,坚持一件事,对自己