面向对象编程——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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。