python_面向对象(初始)

来源:互联网 发布:mac 强制重启finder 编辑:程序博客网 时间:2024/06/05 18:28

1.面向对象不是所有情况都适用

2.面向对象编程

a定义类

class  Foo:

def 方法(self,bb):

pss

b根据类创建对象(创建一个类的实例)

适用对象执行对象中的方法

obj = Foo() obj创建了一个对象

3.self,形式参数,python内部传递

 obj = Foo()

obj.fetch('bb') ==》 self:obj   , backed:“bb”

class Foo:    def fetch(self,bb):        print(self,bb)obj = Foo()print(obj)obj.fetch("aa")>>><__main__.Foo object at 0x000000EF50DAB978><__main__.Foo object at 0x000000EF50DAB978> aa

通过内存地址我们可以看出来,类中函数里self 的内存地址 等价于对象obj的内存地址,实际指向是这个对象


4、self成员变量

class fu():    def a(self):        print(self.test)    def b(self):        print(self.test)c = fu()c.test = 1c.a()c.b()
》》》
11

通过上面的例子可以看出,python 定义成员变量的时候可以在外面定义,是因为self 所指的是对象,正式因为如此可以通过对象定义成员变量~~java中没见过得我一脸懵逼


五、类加括号

自动执行类中的init方法,在init的方法中具体封住的操作,init 叫做构造方法

__del__ 解释器销毁对象的时候自动调用:析构方法

++++++++++++封装+++++++++++++++

1.当同一类型的方法具有相同参数时,直接对封装到的对象即可

2.把类当做模板,创建多个对象(对象内封装的数据可以)

++++++++++++继承+++++++++++++++

1.派生类可以继承基类中所有的功能

class Animal():    def chi(self):        print("chi")class cat(Animal):    def jiao(self):        print("jiao")obj = cat()obj.chi()obj.jiao()
》》》
chijiao

2.派生类可以重写基类,也就是派生类和基类同时存在,优先派生类

class Animal():    def chi(self):        print("chi")class cat(Animal):    def jiao(self):        print("jiao")    def chi(self):        print("buchi")obj = cat()obj.chi()obj.jiao()>>>buchijiao

3.继承从左到右,同一基类从左右到头 

class an():    def piao(self):        print("p")class bn():    def piao(self):        print("a")class cn(bn,an):    def z(self):        print("1")c= cn()c.piao()>>>a