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 = 1
c.a()
c.b()
》》》
1
1
通过上面的例子可以看出,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()
》》》
chi
jiao
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()
>>>
buchi
jiao
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