代码改变世界

python之类操作

2018-01-28 15:10  yyshuke  阅读(152)  评论(0编辑  收藏  举报

面向对象:是利用类和对象来创建各种模型,将函数与数据捆绑,将代码进行封装,代码利用率高。特性就是封装、继承、多态

面向过程:程序根据逻辑从上到下,一步步的编写。

封装:包含着类的数据和方法      继承:子类可以从父类里调用方法和属性    多态:一个接口,多种实现。父类有多个子类,子类和父类有相同的方法名,但是实现不同。

1.类

class Cat(object):

  def __init__(self,name):

    self.name=name

  def  run(self):

    print('%s is running'%self.name)

cat1=Cat('鼠克')

cat1.run()

2.继承例子:

class Cat(object):

  def __init__(self,name):

    self.name=name

  def  run(self):

    print('%s is running'%self.name)

class Bosi(Cat):

  def __init__(self,name,age):

    super(Bosi,self).__init__(name)       用于继承的super()

      self.age=age

  def run(self):

    Cat.run(self)    当和父类有相同方法的时候,会被子类的方法冲掉,这样就不会被冲掉

    print('running.............')

cat2=Bosi('‘哈姆太郎’,2)

cat2.run()

3.多态

子类含有相同的方法,将类与函数相结合,用函数去调用。下面例子是具有相同的方法run

class Dog(object):
def __init__(self,name,age):
self.name=name
self.age=age
def run(self):
print('running1')
class JINmao(Dog):
def __init__(self,name,age,color):
super(JINmao,self).__init__(name,age)
self.color=color
def run(self):
print('running2')
class HAshiqi(Dog):
def __init__(self,name,age,sex):
super(HAshiqi, self).__init__(name,age)
self.sex=sex
def run(self):
print('running3')
def func(obj):
obj.run() 通过这个函数实现一个接口,多种实现
dog1=JINmao('shuke',2,'black')
dog2=HAshiqi('hamutailang',3,'girl')
dog3=Dog('gls',24)
func(dog1)
func(dog2)
func(dog3)

补充:
1.静态方法:和类没有多大关系的,本身只是一个函数,不用传参数self,通过@staticmethod
class A(object):
def __init__(self):
self.n='a'
@staticmethod
def run():
print('running')
a=A()
a.run()
2.类方法:可以访问类变量,通过@classmethod,传递的参数通常用cls
class A(object):
city='beijing'
@classmethod
def getcity(cls):
return cls.city
a=A()
print(a.getcity())